4

我在 WPF 应用程序中有以下网格设置。

  <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="220" />
            <RowDefinition Height="40" />
            <RowDefinition Height="80" />
            <RowDefinition Height="180*" />
        </Grid.RowDefinitions>
  <!-- some content -->
 </Grid>

我想要的是最后一行占据其父级可用的高度。但它似乎不尊重我在最后一行定义中的“*”命令。

请注意,我希望固定所有其他行高..

这可能吗?如果有怎么办?任何帮助或指针表示赞赏..

4

3 回答 3

9

将 height="*" 放在最后一行。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="220" />
        <RowDefinition Height="40" />
        <RowDefinition Height="80" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

于 2013-11-12T16:49:56.213 回答
2

您所写的内容应该没问题(尽管正如@Bolu 评论的那样,在这种情况下180*可以替换为*)。如果最后一行中的内容没有扩展以填充可用大小,我会怀疑以下情况之一:

  1. 可能嵌套在布局面板下方的Grid某个位置,该布局面板不会安排其子项以填充所有可用的垂直空间。例如,Grid面板的祖先之一是StackPanel? 测试这是否是罪魁祸首的一个好方法是将整个注释掉并用易于区分的背景(例如, )Grid替换它,并查看它是否占据了您希望填充的整个区域。BorderMagentaGrid

  2. 最后一行可能实际上没有任何内容。您是否正确设置了正确的Grid.Row值?

  3. 您可能会覆盖最后一行内容的布局行为。您是否将内容设置为VerticalAlignment以外的任何内容Stretch

于 2013-11-12T19:14:37.077 回答
1

从最后一行删除Height属性:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="220" />
        <RowDefinition Height="40" />
        <RowDefinition Height="80" />
        <RowDefinition/>
    </Grid.RowDefinitions>
<!-- some content -->
</Grid>
于 2013-11-12T16:26:26.453 回答