我要做的是显示一个窗口,没有明确的高度/宽度,(两个值都省略或设置为 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>
将此窗口显示为对话框:
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 回答
设置窗口的属性
SizeToContent to "WidthAndHeight"
. 这应该有所帮助 .那么你不能将窗口高度设置为auto,为此你可以使用一个小技巧,命名主要主网格容器,将其高度设置为auto然后将窗口高度绑定到主网格的高度
使用加载的事件窗口在curent屏幕中设置大小
旧问题,但更新的答案:
正如@ Muad'Dib在他的回答中建议的那样:
你应该设置
SizeToContent="WidthAndHeight"
.如果窗口内容的大小增加超过屏幕大小,窗口可能会从屏幕溢出 . 所以,你必须考虑: