ColumnDefinition MinWidth не работает правильно - PullRequest
3 голосов
/ 26 февраля 2010

Я использую Grid в WPF (xaml), и у меня есть какой-то странный эффект при использовании свойства MinWidth в ColumnDefinition. Например, когда я использую 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 ]

10 голосов
/ 26 февраля 2010

Я понимаю, что вы имеете в виду - столбцы слева от желтого столбца шире столбцов справа, даже если они должны иметь одинаковые пропорции.

Я бы сказал, что это ошибка, особенно если учесть, что следующий обходной путь работает :

<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>

Я бы предположил, что эта ошибка связана с тем, как столбцы сгруппированы по ширине ...

0 голосов
/ 26 февраля 2010

Похоже, так оно и есть. Вы ограничили сетку 500 точками и сказали: эй, дайте всем столбцам сетки одинаковую ширину, но этот столбец должен быть не менее 250 точек. Теперь вопрос от WPF к вам: Чувак, я вижу, ты просил меня дать каждому из 9 столбцов не менее 250 баллов, как я могу сделать это в 500 баллов? И он принимает решение, уважать вашу минимальную ширину, но цена - ширина остальных столбцов.

Что касается способа сделать это правильно. Что вы имеете в виду? Что ты хочешь?

...