我有一个非常简单的要求,我似乎找不到解决方案。看看我的示例 XAML 代码:
<Grid ShowGridLines="True" VerticalAlignment="Top" Margin="5">
<Grid.RowDefinitions>
<RowDefinition MinHeight="100"/>
<RowDefinition MinHeight="100"/>
<RowDefinition MinHeight="100"/>
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="GridSplitter">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="Height" Value="1"/>
<Setter Property="Background" Value="Black"/>
</Style>
</Grid.Resources>
<GridSplitter/>
<GridSplitter Grid.Row="1"/>
<GridSplitter Grid.Row="2"/>
</Grid>
我有三行,高度为 100。我希望用户能够拖动任何行的边缘以使其更高,所以我GridSplitter
在每一行中都放了一个。
问题是:
GridSplitter 控件在 Grid 中的行或列之间重新分配空间,而不更改 Grid 的尺寸。例如,当 GridSplitter 调整两列的大小时,一列的 ActualWidth 属性会增加,而同时另一列的 ActualWidth 属性会减少相同的量。
上面的 XAML 不起作用,拖动时没有任何行改变大小,因为GridSplitter
它试图从另一行获取高度并将其添加到正在调整大小的行。由于没有任何行可以变得更小 ( MinHeight="100"
),因此没有任何反应。
但我不想从其他行中获取高度。我想独立增加一行的大小,这反过来会改变Grid
. 如果我将中间行拖到高 50 像素,我希望该行为 150 像素,而其他两行保持 100 像素,使整个网格为 350 像素。
GridSplitter
我失踪的任何设置都允许这样做吗?或者我可以使用其他一些控件吗?