我有一个由 GridSplitter 分隔的 2 列的网格,使用以下 XAML 代码:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" MinWidth="20" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" MinWidth="100" />
</Grid.ColumnDefinitions>
<Rectangle Fill="Blue" />
<GridSplitter Grid.Column="1" Background="LightGray" HorizontalAlignment="Stretch" />
<Rectangle Fill="Yellow" Grid.Column="2" />
</Grid>
问题:右侧列的 MinWidth 被忽略
- 当页面加载时,我绝对需要第一列宽度为“100px”,所以它不能是*大小。
- 我不想在第一列上设置 MaxWidth
*我知道之前已经解决过,但它总是建议将列大小设置为 * 或在第一列上设置一个 maxWidth ......我不想要那个。
找到了一个解决方案,但它的丑陋!:p,任何人都有更清洁的方法来实现我想要的......无码(如果可能的话)?
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
var g = (Grid)sender;
Double maxW = e.NewSize.Width - g.ColumnDefinitions[2].MinWidth - g.ColumnDefinitions[1].ActualWidth;
g.ColumnDefinitions[0].MaxWidth = maxW;
}