2010-09-14 10 views
13

Mam styl ContentControl, który chcę używać w miejscach, gdzie obecnie mam obramowanie. Kiedy używam tego, kontrolki podrzędne nie rozciągną się, by wypełnić i zajmują tylko niewielką ilość miejsca. Próbowałem zastosować HorizontalAlignment = "Stretch" do wszystkiego, ale to nie działa. Co jest nie tak?Rozmiar zawartości zawartości kontrolnej do wypełnienia Silverlight 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> 

...

Przed (działa poprawnie):

<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> 

Po (zastąpić granicy z 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> 

Odpowiedz

45

Musisz ustawić HorizontalContentAlignment="Stretch"i Ustawienia na zewnętrznej ContentControl.

Domyślnym ustawieniem jest NOT rozciąganie zawartości kontenera.

np. pierwsza linia powinna być:

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

Układ Silverlight to czarna sztuka. Dzięki. –

+0

+1 za czarną sztukę! – dFlat

+0

+5 za dobrą odpowiedź –

Powiązane problemy