2011-03-01 48 views
2

我试图把4个扩展器控件放在一个带有4行的网格中,扩展器控件包含一个Grid和一个ListBox(当前持有一些示例数据)。Silverlight - 带有列表框的扩展器控件,100%高度

理想情况下,当扩展器展开时,我希望它可以填充所有可用空间,而不会将剩余的扩展器从屏幕或列表框中移出屏幕。任何人都可以想到一种适应下面的XAML或更新下面的XAML来实现这一目标的方法吗?

<Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource ExpanderData}}"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="0.246*"/> 
       <RowDefinition Height="0.754*"/> 
      </Grid.RowDefinitions> 
      <Grid Margin="0" Grid.Row="1"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="0.275*"/> 
        <ColumnDefinition Width="0.725*"/> 
       </Grid.ColumnDefinitions> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="Auto"/> 
        </Grid.RowDefinitions> 
        <toolkit:Expander x:Name="Expander1" Header="One" IsExpanded="False"> 
         <Grid Background="#FFE5E5E5"> 
          <ListBox Margin="0" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Collection}"/> 
         </Grid> 
        </toolkit:Expander> 
        <toolkit:Expander x:Name="Expander2" Header="Two" IsExpanded="True" VerticalAlignment="Top" Grid.Row="1"> 
         <Grid Background="#FFE5E5E5"> 
          <ListBox Margin="0" ItemTemplate="{StaticResource ItemTemplate1}" ItemsSource="{Binding Collection}"/> 
         </Grid> 
        </toolkit:Expander> 
        <toolkit:Expander x:Name="Expander3" Header="Three" VerticalAlignment="Top" Grid.Row="2" IsExpanded="False"> 
         <Grid Background="#FFE5E5E5"> 
          <ListBox Margin="0" ItemTemplate="{StaticResource ItemTemplate2}" ItemsSource="{Binding Collection}"/> 
         </Grid> 
        </toolkit:Expander> 
        <toolkit:Expander x:Name="Expander4" Header="Four" VerticalAlignment="Top" Grid.Row="3" IsExpanded="False"> 
         <Grid Background="#FFE5E5E5"> 
          <ListBox Margin="0" ItemTemplate="{StaticResource ItemTemplate3}" ItemsSource="{Binding Collection}"/> 
         </Grid> 
        </toolkit:Expander> 
       </Grid> 
      </Grid> 
     </Grid> 
    </Grid> 
</UserControl> 

回答

0

我可能会使用一个DockPanel中,而不是一个网格 - 为Silverlight你必须从Silverlight工具包得到它(http://silverlight.codeplex.com) - 我知道你已经拥有了它,我只是引用它档案。取消选中“LastChildFill”属性并将所有子项停靠到Top。

如果测试数据不足,很难测试,但如果您一次只打开一个扩展器并将每个扩展器的MaxHeight设置为剩余的可用空间?

+0

@CLiown,DockPanel是否为你工作? – 2011-07-15 13:25:07