在测量行的高度时是否忽略了Grid.RowSpan? (WPF)

时间:2010-09-17 01:11:27

标签: wpf grid

这是一个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 :(得分:0)

你应该看到的是Button占用了所需的高度,TextBlock获得了控件可用高度的其余部分。由于第0列只有固定大小的矩形,因此它的宽度始终为50,第1列占用可用宽度的其余部分。您是否看到了除此之外的其他内容,或者您​​希望布局有什么不同之处?