Мой поиск в Google и stackoverflow провалился, поэтому я представляю сообществу этот вопрос.
(Все это создается с использованием VS2010 и .NET 4.0 в пустом стандартном решении WPF)
Рассмотрим следующий XAML:
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
Какой бы вы предсказали ширину "aborder2"?
Если вы догадались «20 пикселей», вы ошиблись бы. Правильный ответ - 110 пикселей.
Рассмотрим этот XAML:
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
Какой бы вы предсказали ширину "aborder2"?
Если вы угадали 20 или 110 пикселей, вы ошибаетесь. Правильный ответ 200 пикселей.
Я не могу понять это, и это сводит меня с ума. Кажется, что ответ должен быть очевидным; очевидно, существует некоторое взаимодействие между автоматически заполняющимся столбцом сетки и панелью стека, которое приводит к тому, что сетка выходит из строя. Но это, похоже, не имеет смысла смысл - какие бы правила ни управляли этим поведением, они кажутся произвольными. Почему 110 пикселей? Почему не 109 пикселей или 100 пикселей? Я бы понял, если авторазмерный столбец не раскрылся полностью или что-то в этом роде, но если столбец с фиксированной шириной случайно проигнорирует его ширину, я получаю сгоревшую оболочку разработчика.
Буду очень признателен за любую помощь или путеводные огни!