gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:40:27 24 4
gpt4 key购买 nike

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

<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>

这只是显示两个按钮“顶部”和“底部”,每个按钮在窗口中占据相等的垂直空间。

单击顶部按钮执行以下操作:
private void TopButtonClick(object sender, RoutedEventArgs e)
{
if (_bottomButton.Visibility == Visibility.Collapsed)
{
_bottomButton.Visibility = Visibility.Visible;
}
else
{
_bottomButton.Visibility = Visibility.Collapsed;
}
}

...在折叠和可见之间切换底部按钮的可见性。

我想要发生的是在底部按钮折叠时调整顶部按钮的大小以填充窗口。实际发生的是底部按钮被隐藏,但顶部按钮保持其原始大小。

问题 :当底部按钮折叠时,我必须做哪些 wpf/xaml 魔术才能让顶部按钮展开以填充窗口?

最佳答案

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

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

如果您的第二个按钮的高度未定义并且应该是网格高度的 50%,我会使用转换器来绑定(bind) Button.Height属性为父网格高度的一半
<Button Height="{Binding ActualHeight, 
RelativeSource={RelativeSource Grid},
Converter={StaticResource HalfOfValueConverter}}" />

如果你有兴趣,我其实有一个 MathConverter发表 on my blog我用于任何类型的具有界值的数学方程。
<Button Height="{Binding ActualHeight, 
RelativeSource={RelativeSource Grid},
Converter={StaticResource MathConverter},
ConverterParameter=@VALUE/2}" />

关于wpf - 当其他内容折叠时,网格内容扩展以填充容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11885558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com