我在一个使用网格的 WPF 应用程序中工作,网格内部有几个 TreeView:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Header"/>
<TreeView x:Name="Tree1"" Grid.Row="2"/>
<TextBlock Text="SecondHeader" Grid.Row="2"/>
<TreeView x:Name="Tree2" Grid.Row="3"/>
</Grid>
使用此设置,标题的大小将与 Grid 的大小成比例。
当我有一棵较小的树时会出现问题,并且两棵树之间有一个空白区域,如果第一棵树是空的,它也会占据网格的一半。
如果我将代码更改为:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Header"/>
<TreeView x:Name="Tree1"" Grid.Row="2"/>
<TextBlock Text="SecondHeader" Grid.Row="2"/>
<TreeView x:Name="Tree2" Grid.Row="3"/>
</Grid>
我得到了与我想要的非常相似的结果,但是在这种情况下,树的滚动条不会出现,因为树会占据它们需要的所有区域,并且会溢出我的网格。
如果我将第二个解决方案包含在滚动查看器中,我将获得整个网格的通用滚动:
<ScrollViewer><Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Header"/>
<TreeView x:Name="Tree1"" Grid.Row="2"/>
<TextBlock Text="SecondHeader" Grid.Row="2"/>
<TreeView x:Name="Tree2" Grid.Row="3"/>
</Grid></ScrollViewer>
该解决方案的问题是:如果第一棵树足够长,除非向下滚动,否则用户将看不到第二棵树,并且要求两棵树始终可见。
恢复我需要具有以下功能的设置:
- 在网格内显示两个树视图
- 这些树视图必须有自己的滚动
- 如果其中一个树视图没有元素,则不应该是间隙。
任何想法?