我有一个有两行的简单网格,第一行有一个固定的高度。在里面,我有一个带有RowSpan =" 2"的元素,另一个元素应该只存在于第一行:
<Grid Background="Lime">
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Rectangle Grid.RowSpan="2" Height="50" Fill="Blue"/>
<TextBlock Grid.Row="0" Text="Foo" VerticalAlignment="Center" Background="Red"/>
</Grid>
然而,第一行的实际高度只是忽略了高度设置,远远超出预期。
这是网格中的错误吗?我该如何解决这个问题?
答案 0 :(得分:0)
我想你想要这样的东西:
<Grid Background="Lime">
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Rectangle Grid.RowSpan="2" Height="50" VerticalAlignment="Center" Fill="Blue"/>
<TextBlock Grid.Row="0" Text="Foo" VerticalAlignment="Center" Background="Red"/>
</Grid>
我不确定RowSpan
是否会RowDefinition
覆盖Height="*"
。{/ p>
答案 1 :(得分:0)
我也尝试了几次,但它不会起作用。我认为这是设计上的。你不能把矩形作为网格的父级放在xaml中吗?
答案 2 :(得分:0)
它似乎不是这样工作的
相反,我只是使用VerticalAlignment
属性将TextBlock
移到顶部,并完全删除了RowDefinitions:
<Grid Background="Lime">
<Rectangle Height="50" Fill="Blue"/>
<TextBlock Grid.Row="0" Text="Foo" VerticalAlignment="Top" Background="Red" Height="20"/>
</Grid>
答案 3 :(得分:0)
在这种情况下,您必须使用VerticalAlignment进行拉伸才能填充RowDefinition的高度。
<Grid Background="Lime">
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Rectangle Grid.RowSpan="2" Height="50" Fill="Blue"/>
<TextBlock Name="texto" Grid.Row="0" Text="Foo" VerticalAlignment="Stretch" Background="Red"/>
</Grid>
通过这种方式,您将看到TextBox延伸到行高。