2010-09-14 2 views
13

У меня есть стиль ContentControl, который я хочу использовать в тех местах, где у меня есть граница. Когда я использую это, дочерние элементы управления не будут растягиваться, чтобы заполнить и занимать лишь небольшое пространство. Я пробовал применять HorizontalAlignment = «Stretch» ​​ко всему, но он не работает. Что не так?Содержимое содержимого содержимого для заполнения 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> 

...

До (отлично работает):

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

Поведение по умолчанию NOT растянуть содержимое контейнера.

например. первая строка должна быть:

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

Silverlight layout - это черное искусство. Благодарю. –

+0

+1 для черного искусства! – dFlat

+0

+5 за хороший ответ –

Смежные вопросы