Grid.RowSpan игнорируется при измерении высоты строк? (WPF) - PullRequest
0 голосов
/ 17 сентября 2010

Вот сетка 2x2, в которой первый столбец охватывает обе строки, но его содержимое с фиксированной высотой, по-видимому, диктует минимальную высоту для первой строки:

<UserControl x:Class="Test"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Width="300">
  <Grid>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <Rectangle Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Fill="Green"
      Width="50" Height="50" VerticalAlignment="Top" />

    <TextBlock Grid.Row="0" Grid.Column="1" Margin="3" TextWrapping="Wrap">
        Some text goes here. 
    </TextBlock>

    <Button Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right">OK</Button>
  </Grid>
</UserControl>

В этом примереПервая строка всегда имеет высоту не менее 50, как видно из пространства, занимаемого TextBlock, хотя я бы хотел, чтобы он (и, как следствие, весь элемент управления) был короче, если текста для отображения мало.Я что-то упустил, или это ошибка макета WPF?

(Да, я знаю, что мог бы легко закодировать это с помощью вложенных сеток, но это упрощенная переработка более сложного случая.)

1 Ответ

0 голосов
/ 17 сентября 2010

То, что вы должны увидеть, это то, что Button занимает столько высоты, сколько ей нужно, а TextBlock получает остальную доступную высоту элемента управления.Поскольку столбец 0 содержит только прямоугольник фиксированного размера, он всегда будет иметь ширину 50, а столбец 1 будет занимать оставшуюся часть доступной ширины.Вы видите что-то другое, или вы хотите, чтобы макет выполнял что-то другое?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...