2010-09-14 18 views
13

में भरने के लिए आकार देने वाली सामग्री नियंत्रण सामग्री मेरे पास एक ContentControl की शैली है जिसे मैं उन स्थानों पर उपयोग करना चाहता हूं जहां वर्तमान में मेरे पास सीमा है। जब मैं इसका उपयोग करता हूं, तो बाल नियंत्रण भरने के लिए नहीं फैलता है और केवल थोड़ी सी जगह लेता है। मैंने क्षैतिज एलाइनमेंट = "स्ट्रेच" को सबकुछ लागू करने का प्रयास किया है, लेकिन यह काम नहीं करता है। क्या गलत है?सिल्वरलाइट 4

<Style x:Key="GradientPanel" TargetType="ContentControl"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ContentControl"> 
       <Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> 
        <Rectangle RadiusY="10" RadiusX="10" Stroke="Black" StrokeThickness="0"> 
         <Rectangle.Effect> 
          <DropShadowEffect Opacity="0.56" ShadowDepth="1" BlurRadius="3" /> 
         </Rectangle.Effect> 
         <Rectangle.Fill> 
          <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
           <GradientStop Color="#FFE1EAF3"/> 
           <GradientStop Color="White" Offset="1"/> 
           <GradientStop Color="#FFFAFBFD" Offset="1"/> 
          </LinearGradientBrush> 
         </Rectangle.Fill> 
        </Rectangle> 
        <ContentPresenter Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

...

से पहले (ठीक काम करता है):

<Border Style="{StaticResource SearchContainerBorder}" > 
    <Grid Margin="5"> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 
     <ToggleButton Style="{StaticResource ToggleButtonExpanderStyle}" Grid.Row="0" Grid.Column="1" Height="25" Width ="25" HorizontalAlignment="Center" VerticalAlignment="Top" /> 
     <ContentControl Grid.Row="0" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
    </Grid> 
</Border> 

के बाद (ContentControl साथ सीमा डालें):

<ContentControl Style="{StaticResource GradPanel}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
    <Grid Margin="5"> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 
     <ToggleButton Style="{StaticResource ToggleButtonExpanderStyle}" Grid.Row="0" Grid.Column="1" Height="25" Width ="25" HorizontalAlignment="Center" VerticalAlignment="Top" /> 
     <ContentControl Grid.Row="0" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
    </Grid> 
</ContentControl> 

उत्तर

45

आप HorizontalContentAlignment="Stretch"निर्धारित करने की आवश्यकता है और आपके बाहरी परVerticalContentAlignment="Stretch" सेटिंग्स ContentControl।

डिफ़ॉल्ट व्यवहार एक कंटेनर की सामग्री को फैलाता है।

उदा। पहली पंक्ति होनी चाहिए:

<ContentControl Style="{StaticResource GradPanel}" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       HorizontalContentAlignment="Stretch" 
       VerticalContentAlignment="Stretch" > 
+11

सिल्वरलाइट लेआउट एक काला कला है। धन्यवाद। काला कला के लिए –

+0

+1! – dFlat

+0

+5 अच्छे उत्तर के लिए –

संबंधित मुद्दे