这是一个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布局错误?
(是的,我知道我可以使用嵌套网格轻松编码,但这是对更复杂案例的简化升级。)
答案 0 :(得分:0)
你应该看到的是Button占用了所需的高度,TextBlock获得了控件可用高度的其余部分。由于第0列只有固定大小的矩形,因此它的宽度始终为50,第1列占用可用宽度的其余部分。您是否看到了除此之外的其他内容,或者您希望布局有什么不同之处?