ColumnDefinition MinWidth无法正常工作

时间:2010-02-26 08:07:33

标签: wpf xaml grid width css

我在WPF(xaml)中使用Grid,在ColumnDefinition中使用MinWidth属性时我有一些奇怪的效果。例如,当我使用9 ColumnDefinition并且每个ColumnDefinition具有'Width =“*”'属性并且其中一个中间列也具有MinWidth属性时,则其他列的大小是错误的。

嗯,这很难说,但是这个xaml代码很好地说明了这一点:

  <Grid Width="500">  
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*" MinWidth="250"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Border Grid.Column="0" Background="Green"/>
    <Border Grid.Column="1" Background="Blue"/>
    <Border Grid.Column="2" Background="Red"/>
    <Border Grid.Column="3" Background="Yellow"/>
    <Border Grid.Column="4" Background="Purple"/>
    <Border Grid.Column="5" Background="Orange"/>
    <Border Grid.Column="6" Background="Azure"/>
    <Border Grid.Column="7" Background="LightBlue"/>
    <Border Grid.Column="9" Background="LightGreen"/>
  </Grid>

运行此xaml代码时,您会看到前3列的宽度与最后5列的宽度不同。我希望所有这些都具有相同的宽度。

有谁知道这是不是一个错误。如果有办法正确地做到这一点。

提前致谢。

2 个答案:

答案 0 :(得分:10)

我明白你的意思 - 黄色左边的列比右边的列宽,即使它们的比例相同。

我会说这是一个错误,特别是当您考虑以下解决方法有效时:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="1.0000001*" MinWidth="250"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

我猜这个错误与列如何按宽度分组有关...

答案 1 :(得分:0)

它看起来就像它的工作方式。你已经限制了500点的网格,并说:嘿,给所有网格列宽度相同,但这个列应该至少250点。现在从WPF到你的问题:老兄,我看到你让我给9列中的每一列至少250分,我怎么能在500分呢?它决定尊重你的最小宽度,但价格是 - 其余列的宽度。

至于正确执行此操作的方法。你什么意思?你想要什么?