我有一个基本布局的窗口:
<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
将顶部设置RowDefinition为Height="*",意味着它将占用所有可用空间,并将第二个设置RowDefinition为Height="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)
| 归档时间: |
|
| 查看次数: |
18550 次 |
| 最近记录: |