WPF 网格列 50% 宽度

WPF grid column 50% width

我的网格布局需要 3 列,看起来像这样:

  1. window
  2. 的 50%
  3. 其他地方
  4. 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>

另一种选择是处理 WindowSizeChanged 事件并计算第一列的宽度。

<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);            
}