2011-10-24 77 views
1

我在一个网格行中有两个扩展器,但在不同的列中。我怎样才能将它扩展到整行,而不是只在列上。一行中不同列的扩展。扩展到整行

<Grid x:Name="mainGrid"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="90"/> 
     <ColumnDefinition Width="90"/> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition MinHeight="40" /> 
     <RowDefinition MinHeight="40" /> 
    </Grid.RowDefinitions> 
    <Controls:Expander Grid.Row="0" Grid.Column="0" x:Name="expander2" Header="Header1" 
          MinHeight="33" Padding="3"> 
     <TextBlock Text="SomeText1" /> 
    </Controls:Expander> 

    <Controls:Expander Grid.Row="0" Grid.Column="1" x:Name="expander1" Header="Header2" 
          MinHeight="33" Padding="3"> 
     <TextBlock Text="SomeText2" /> 
    </Controls:Expander> 
</Grid> 

expander1和expander2应扩大到整个行0

回答

0

介绍触发器对于检查他们的财产IsExpanded扩展器,并设置其Grid.RowSpan为2

<Style TargetType="{x:Type Expander}"> 
     <Style.Triggers> 
      <Trigger Property="IsExpanded" Value="True"> 
       <Setter Property="Grid.RowSpan" Value="2" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

为Silverlight

<Style TargetType="{x:Type Expander}"> 
    <Setter Property="Grid.RowSpan" 
      Value="{Binding IsExpanded, 
          RelativeSource={RelativeSource 
           Self}, 
          Converter={StaticResource 
           local:ExpansionToRowSpanConverter}}" 
    </Style> 

代码背后......(这只是为了说明)

 ExpansionToRowSpanConverter.Convert(....) 
     { 
      return (bool)value ? 2 : 1; 
     } 

这是否对你的工作?

+0

非常感谢,它工作正常。你可以给任何建议解决这个问题在Silverlight中不支持触发器? – scor4er

+0

请参阅我上面编辑的答案。 –