C# 展开最后一行网格以填充wpf应用程序中的窗口

C# 展开最后一行网格以填充wpf应用程序中的窗口,c#,wpf,C#,Wpf,我在WPF应用程序中设置了以下网格 <Grid> <Grid.RowDefinitions> <RowDefinition Height="220" /> <RowDefinition Height="40" /> <RowDefinition Height="80" /> <RowDefinition Height

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

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

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

请注意,我希望所有其他行的高度都是固定的


这可能吗?如果是,怎么做?感谢您的帮助或指点。

从最后一行删除
Height
属性:

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

将height=“*”放在最后一行

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


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

  • 网格
    可能嵌套在布局面板下方的某个位置,该布局面板不排列其子项以填充所有可用的垂直空间。例如,
    网格
    面板的祖先之一是
    堆栈面板
    ?测试这是否是罪魁祸首的一个好方法是注释掉整个
    网格
    ,并将其替换为背景易于识别的
    边框
    (例如,
    洋红色
    ),然后查看它是否占据了您希望
    网格
    填充的整个区域

  • 最后一行中可能没有任何内容。您是否正确设置了网格行的

  • 您可能正在覆盖最后一行内容的布局行为。您是否将内容的
    垂直对齐
    设置为除
    拉伸
    之外的任何内容


  • 为完整性起见,Height=“*”也可以使用,但含义略有不同。最后一行中的内容是什么,请确保已从中删除
    垂直对齐
    高度
    属性设置。此外,它也可以使用,但实际上不需要使用
    180*
    ,因为这是唯一剩下的一行。你告诉网格把剩下的空间平均分为180个部分,最后一行将占据所有部分(180个)。只有当您有多行并且希望它们不均匀地占用剩余的空间时(例如,
    1*
    (或者只是
    *
    ),才有意义,
    2*
    意味着分成3部分,一部分占1,另一部分占2)。