Wpf 窗高=“;“自动”;没有按预期工作

Wpf 窗高=“;“自动”;没有按预期工作,wpf,Wpf,我试图做的是显示一个没有明确的高度/宽度的窗口(两个值都被忽略或设置为Auto)。 我猜想窗口会通过自动计算所有包含的usercontrols大小来确定它的大小,但这实际上不起作用 相反,我得到了一个大窗口,其中Actualwidth和Actualheight的值都设置为512(?!) 窗口声明: <Window x:Class="Window3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x

我试图做的是显示一个没有明确的高度/宽度的窗口(两个值都被忽略或设置为
Auto
)。 我猜想窗口会通过自动计算所有包含的usercontrols大小来确定它的大小,但这实际上不起作用

相反,我得到了一个大窗口,其中
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>
有解决办法吗?
我不想显式地设置窗口的大小,因为表单中的许多控件将根据构造函数参数进行折叠,而试图找到表单的实际大小将很棘手(而且很难看)。

设置窗口的属性
SizeToContent=“widthandhight”
。这应该会有帮助。

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

旧问题,但更新了答案:

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

您应该设置
SizeToContent=“WidthAndHeight”

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

MaxWidth="600"
MaxHeight="400"

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

您可能还希望使用
.WindowStartupLocation将窗口居中
设置为
“CenterScreen”
,以便懒惰的人复制粘贴
SizeToContent=“WidthAndHeight”
;)小心使用SizeToContent=“WidthAndHeight”,如果窗口内容的大小增加超过屏幕大小,窗口可能会从屏幕溢出。@KyloRen因此应设置MaxWidth或MaxHeight以避免problem@CarlosLiu很长一段时间,我已经不练习了,记不起来了,但从逻辑上说,是的,听起来不错。在演示中尝试:)这很好,但我仍然好奇为什么
Height=“Auto”
Width=“Auto”
不能完成同样的任务?我猜是因为这些设置不考虑窗口内容。如果不遵守
MaxHeight=“400”
,该怎么办?它一直增长到屏幕极限?这种方法需要小心,因为你不希望整个窗口的高度与主网格的高度相匹配;您希望窗口内容区域的高度与网格的高度相匹配。
MaxWidth="600"
MaxHeight="400"