0

我使用以下 XAML 代码创建了一个简单的 WPF 应用程序:

<Window x:Class="WpfApplication1.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" SizeToContent="WidthAndHeight">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Button MinWidth="200" MinHeight="40" Content="Hello 1"/>
    <Button MinWidth="200" MinHeight="40" Content="Hello 2" Grid.Column="1"/>

</Grid>
</Window>

如果我启动应用程序,我可以将窗口的大小调整为小于两个按钮的大小。

如您所见,我使用了 MinWidth 和 MinHeight 属性,但它们不起作用。

在这种情况下请帮助我。

问候,

托马斯

4

2 回答 2

0

您可能已经解决了您的问题,但我会为仍然不熟悉 WPF 的任何人(如我)留下一个简单的解决方案。

<Window>标签内,为事件添加一个事件处理程序ContentRendered

<Window x:Class="MyTest.MyForm" 
    ... 
    ... 
    SizeToContent="WidthAndHeight"
    ContentRendered="Window_ContentRendered">`

然后添加代码隐藏:

private void Window_ContentRendered(object sender, EventArgs e)
{
    MinWidth = ActualWidth;
    MinHeight = ActualHeight;
}

这样,窗口将首先计算其大小(基于SizeToContent="WidthAndHeight"),然后在呈现其内容后设置最小值,从而防止用户将其大小调整为小于内容。

于 2021-11-18T01:23:00.677 回答
-1

您可能希望将 MinHeight 和 MinWidth 添加到 WINDOW 级别,以永远不会小于您在其内容中期望的最小元素......

Title="MainWindow" Height="350" Width="525" MinHeight="90" MinWidth="410" SizeToContent="WidthAndHeight"

两个按钮高 40 (80) 加上一些任意间隙 (10) = 90 的最小高度......宽度也是如此。两个按钮的最小宽度为 200 = 总共 400 加上任意间隙 (10) = 410。

于 2012-10-17T16:52:23.527 回答