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

相反,我得到了一个大窗口,Actualwidth和Actualheight值都设置为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

有解决办法吗? 我不想显式地设置窗口的大小,因为表单中的许多控件将根据构造函数参数进行折叠,并且试图找到表单的实际大小将是棘手的(而且很难看)。


当前回答

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

其他回答

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

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

老问题,但更新了答案:

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

你应该设置SizeToContent="WidthAndHeight"。

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

MaxWidth="600"
MaxHeight="400"

您可以执行以下操作:

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

请注意,单独使用SizeToContent就可以了。然而,如果您的内容大小大于屏幕,窗口将溢出超出您的屏幕,但结合设置窗口的MaxWidth和MaxHeight为您的屏幕将基本上适合窗口的内容到屏幕的最大值。

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