我对WPF网格控件的行为感到很困惑。
这是我能得到的最简单的复制品:
<Window x:Class="WpfApplication2.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 Height="*" MinHeight="100" MaxHeight="300" />
<RowDefinition Height="0.1*" MinHeight="100" />
</Grid.RowDefinitions>
<Button Grid.Row="0" Height="200" />
<Button Grid.Row="1" />
</Grid>
</Window>
如果你运行它并缩小窗口,你会发现在顶部按钮开始缩小之前底部按钮会被剪裁。
您可以通过从按钮中删除Height="200"
来获得所需的行为。但是,在我的实际用例中,该按钮被包含ScrollViewer的Border替换。虽然我没有明确地设置任何高度(但是我做了一个ScrollViewer的内容),但是看到了相同的剪切行为。
所以,问题是:
如何让行忽略其内容的高度?还是有另一种方法可以达到同样的效果吗?
答案 0 :(得分:2)
您的最小网格大小为300(Row1为200,Row2为100),因此Grid
的最小值为300.如果将窗口缩小到该大小以下,则只是剪切{{ 1}}并隐藏它的一部分,而不是缩放它。
也许您可以转而使用Grid
代替?
DockPanel
这样,您的底部位将始终停靠在屏幕底部,而其他内容将占用剩余空间。
如果您真的想保持尺寸比例,我建议使用转换器将内容控件的高度设置为窗口大小的百分比。
<DockPanel>
<Button DockPanel.Dock="Bottom" MinHeight="100" />
<Button Grid.Row="0" Height="200" MinHeight="100" MaxHeight="300" />
</DockPanel>