我的网格布局中需要3列,而看起来像这样:
- 窗口的50%
- 其他地方
- 30像素宽
但我无法设置,你们中有人知道如何实现吗?
我试着用*,但它总是在没有固定宽度的列的情况下解析宽度,而且看起来不太好。
所以这并不能实现我所需要的:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
谢谢你的帮助,大卫。
我将创建具有两列的Grid
,在第二列中创建另一个Grid
。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
</Grid>
</Grid>
另一个选项是处理Window
的SizeChanged
事件并计算第一列的宽度。
<Grid x:Name="MyGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
</Grid>
背后的代码
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
MyGrid.ColumnDefinitions[0].Width = new GridLength(e.NewSize.Width / 2);
}