当中间列具有MinWidth时,为什么WPF Grid不能平均共享空间?

Stu*_*ris 10 wpf

在此示例中,第一列得到100,接下来的两列得到50,这是预期的行为.

<Grid Width="200" Height="200">
    <Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="100" />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Border Background="Red" Grid.Column="0" />
    <Border Background="Yellow" Grid.Column="1" />
    <Border Background="Blue" Grid.Column="2" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

替代文字

如果我将MinWidth移动到中间列...

<Grid Width="200" Height="200">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition MinWidth="100" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Border Background="Red" Grid.Column="0" />
    <Border Background="Yellow" Grid.Column="1" />
    <Border Background="Blue" Grid.Column="2" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

...然后第一列得到33.3,最后一列66.6看起来很奇怪.不知道为什么这应该改变网格的行为.我希望第0列和第2列各得50.

替代文字

更新:我理解为什么会发生这种情况,但是想知道是否有人认为这是一个错误(特别是因为Silverlight中的行为不同)

小智 1

只是一个更新..我已经尝试了 XAML 片段与 .NET 3.5/4.0 Silverlight 3/4 的组合,但仍然无法为第二个示例获得相同的宽度...

此 XAML 是解决该问题的唯一方法:

<Grid Width="200" Height="200">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width=".5*" />
            <ColumnDefinition MinWidth="100" />
            <ColumnDefinition Width=".5*" />
        </Grid.ColumnDefinitions>
        <Border Background="Red" Grid.Column="0" />
        <Border Background="Yellow" Grid.Column="1" />
        <Border Background="Blue" Grid.Column="2" />
    </Grid>
Run Code Online (Sandbox Code Playgroud)

你们这边有什么更新吗?