我在WPF应用程序中有以下网格设置。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="220" />
<RowDefinition Height="40" />
<RowDefinition Height="80" />
<RowDefinition Height="180*" />
</Grid.RowDefinitions>
<!-- some content -->
</Grid>
我想要的是最后一行占用其父级可用的高度。但它似乎没有遵守最后一行定义中的'*'命令。
请注意,我希望修复所有其他行高..
这可能吗?如果是这样的话?任何帮助或指示表示赞赏..
答案 0 :(得分:5)
在最后一行放置身高=“*”。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="220" />
<RowDefinition Height="40" />
<RowDefinition Height="80" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
答案 1 :(得分:2)
你所写的内容应该没问题(尽管@Bolu评论说,在这种情况下180*
可以替换为*
。如果最后一行中的内容没有扩展以填充可用的大小,我会怀疑以下之一:
Grid
可能嵌套在布局面板下方的某处,而布局面板不会安排其子项填充所有可用的垂直空间。例如,Grid
小组的一个祖先是StackPanel
?测试这是否是罪魁祸首的一个好方法是注释掉整个Grid
并将其替换为具有易于区分的背景的Border
(例如Magenta
)并查看它是否占用您期望Grid
填充的整个区域。
最后一行可能没有任何内容。您是否正确设置了正确的Grid.Row
值?
您可能会覆盖最后一行内容的布局行为。您是否将内容的VerticalAlignment
设置为Stretch
以外的任何内容?
答案 2 :(得分:0)
从最后一行删除Height
属性:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="220" />
<RowDefinition Height="40" />
<RowDefinition Height="80" />
<RowDefinition/>
</Grid.RowDefinitions>
<!-- some content -->
</Grid>