窗口高度=“Auto"没有达到预期效果

我要做的是显示一个窗口,它没有显式地具有高度/宽度,(两个值都省略或设置为Auto)。 我猜窗口会通过自动计算所有包含的用户控件大小来找出它的大小,但这实际上不起作用!< / p >

相反,我得到了一个大窗口,ActualwidthActualheight的值都设置为512 (?!?!)

窗口申报:

<Window x:Class="Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window3"
Height="Auto">
<StackPanel>
<Label>Window</Label>
</StackPanel>
</Window>

通过以下方式显示此窗口为对话框:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click
Dim dlg As New Window3
dlg.ShowDialog()
End Sub

有解决方案吗? 我不想显式地设置窗口的大小,因为表单中的许多控件将根据构造函数参数折叠,并且试图找到表单的实际大小将是棘手的(和丑陋的)

78654 次浏览

设置窗口的属性SizeToContent="WidthAndHeight"。这应该会有所帮助。

你不能将窗口高度设置为auto,你可以使用一个小技巧,命名main主网格容器,将其高度设置为auto然后将窗口高度绑定到主网格的高度

老问题,但更新了答案:

正如@Muad'Dib在他的回答中所建议的那样:

你应该设置SizeToContent="WidthAndHeight"

如果窗口内容的大小增加超过屏幕大小,窗口可能从屏幕溢出。所以,你必须考虑:

MaxWidth="600"
MaxHeight="400"

在加载事件窗口的当前屏幕中设置大小

您可以执行以下操作:

MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
SizeToContent = SizeToContent.WidthAndHeight;

请注意,单独使用SizeToContent也可以。然而,如果你的内容大小大于屏幕,窗口将溢出超出你的屏幕,但结合设置窗口的MaxWidthMaxHeight为你的屏幕,基本上会使窗口的内容达到屏幕的最大值。