我有一个包含两列的网格,通过以下XAML代码使用GridSplitter进行分隔:
<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;
}