窗口高度=“自动”无法正常工作


223

我想做的是显示一个没有明确指定高度/宽度的窗口(两个值均省略或设置为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

有解决方案吗?我不想显式设置窗口的大小,因为表单中的许多控件都将基于构造函数参数折叠起来,而尝试查找表单的实际大小将非常棘手(而且很丑陋)。


7
您可能还想将窗口居中.WindowStartupLocation设置为"CenterScreen"
AndersLindén2012年

Answers:


408

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


89
对于想要复制粘贴内容的懒惰人SizeToContent="WidthAndHeight";)
Tono Nam

4
小心使用SizeToContent =“ WidthAndHeight”,如果窗口内容的大小增加到大于屏幕大小,则窗口可能会从屏幕溢出。
Kylo Ren

@KyloRen,因此应将MaxWidth或MaxHeight设置为避免该问题
Carlos Liu

@CarlosLiu很长一段时间,我没有锻炼,不记得了,但是从逻辑上讲是正确的。尝试演示:)
Kylo Ren

这是伟大的,但我仍然好奇,为什么Height="Auto"Width="Auto"没有完成同样的事情?我猜是因为这些设置未考虑窗口内容。
Mike Lowery

7

旧问题,但最新答案:

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

你应该设置SizeToContent="WidthAndHeight"

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

MaxWidth="600"
MaxHeight="400"

如果MaxHeight="400"不遵守该怎么办?它一直增长到屏幕限制?
-andrepaulo

3

好吧,您不能将窗口高度设置为自动,为此,您可以使用一些技巧,将主网格容器命名为主容器,将其高度设置为自动,然后将窗口高度绑定到主网格的高度


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.