窗口高度=“自动”未按预期工作

时间:2009-05-01 16:22:18

标签: wpf

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

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

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

4 个答案:

答案 0 :(得分:389)

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

答案 1 :(得分:7)

旧问题,但更新的答案:

正如@ Muad&Dbe; Dib在答案中建议的那样:

您应该设置SizeToContent="WidthAndHeight"

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

MaxWidth="600"
MaxHeight="400"

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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