当其他内容折叠时,网格内容会扩展以填充容器?

Pj.*_*Pj. 5 wpf xaml

我有一个基本布局的窗口:

<Window x:Class="GridStuffs.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Button Grid.Row="0" Click="TopButtonClick" VerticalAlignment="Stretch">Top</Button>
    <Button Grid.Row="1" Name="_bottomButton">Bottom</Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这只是显示两个按钮"顶部"和"底部",每个按钮在窗口中占据相同的垂直空间.

单击顶部按钮执行以下操作:

private void TopButtonClick(object sender, RoutedEventArgs e)
{
    if (_bottomButton.Visibility == Visibility.Collapsed)
    {
        _bottomButton.Visibility = Visibility.Visible;
    }
    else
    {
        _bottomButton.Visibility = Visibility.Collapsed;
    }
}
Run Code Online (Sandbox Code Playgroud)

...切换折叠和可见之间的底部按钮的Visibity.

我想要发生的是当顶部按钮折叠时,顶部按钮调整大小以填充窗口.实际发生的是隐藏了底部按钮,但顶部按钮保留了原始尺寸.

问题:当底部按钮折叠时,我需要做什么wpf/xaml魔术才能让顶部按钮展开以填充窗口?

Rac*_*hel 15

将顶部设置RowDefinitionHeight="*",意味着它将占用所有可用空间,并将第二个设置RowDefinitionHeight="Auto"意味着它将占用显示其内容所需的空间,

<Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="Auto" />
</Grid.RowDefinitions>
Run Code Online (Sandbox Code Playgroud)

如果第二个按钮的高度没有定义并且应该是网格高度的50%,我会使用转换器将Button.Height属性绑定到父网格高度的一半

<Button Height="{Binding ActualHeight, 
    RelativeSource={RelativeSource Grid}, 
    Converter={StaticResource HalfOfValueConverter}}" />
Run Code Online (Sandbox Code Playgroud)

如果您有兴趣,我实际上在我的博客MathConverter发布一个我用于任何具有约束值的数学方程式.

<Button Height="{Binding ActualHeight, 
    RelativeSource={RelativeSource Grid}, 
    Converter={StaticResource MathConverter},
    ConverterParameter=@VALUE/2}" />
Run Code Online (Sandbox Code Playgroud)