如何使 WPF 布局网格填充所有可用的垂直 space?

How do I make a WPF layout Grid fill all available vertical space?

我的表单在垂直 StackPanel 中包含两个 Grid 元素。我本以为底部 Grid 会自动填充所有可用的 space,正如我所希望的那样,但我已经在 Grid 行上设置了高度:

<RowDefinition Height="20" />
<RowDefinition Height="*" />
<RowDefinition Height="25" />

顶部和底部的短行分别用于标签和按钮。我尝试将网格的 VerticallAllignment 设置为 Stretch,但无济于事。

如何将底部网格的底部锚定到表单的底部,而不考虑表单的高度?

基本上你不能使用 StackPanel 来填充所有可用的垂直 space。

但是你可以使用 DockPanel:

<DockPanel LastChildFill="True">
    <Grid DockPanel.Dock="Top"/>
    <Grid />
</DockPanel>

您也可以使用网格:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Grid Grid.Row="0"/>
    <Grid Grid.Row="1"/>
</Grid>