窗口高度=“自动”不按预期方式工作

我试图做的是显示一个窗口,没有明确的高度/宽度,(这两个值省略或设置为Auto )。 我猜测窗口会通过自动计算所有包含的usercontrols大小来找出它的大小,但是这实际上并不工作!

相反,我得到一个巨大的窗口, 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 

有这个解决scheme吗? 我不想明确地设置我的窗口的大小,因为表单中的很多控件将根据构造函数参数折叠,而试图find表单的实际大小将是棘手的(和丑陋的)。

将窗口的属性SizeToContent to "WidthAndHeight" 。 这应该有所帮助。

老问题,但更新的答案:

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

你应该设置SizeToContent="WidthAndHeight"

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

 MaxWidth="600" MaxHeight="400" 

那么你不能将窗口高度设置为自动,要做到这一点,你可以使用一个小技巧,命名主要网格容器,将其高度设置为自动,然后将窗口高度绑定到主网格的高度