当使用以下XAML时,窗口大小不是5000x5000,而是一些裁剪按钮的小窗口。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" >
<Button Width="5000" Height="5000">XXX</Button>
</Window>
据我所知,size我没有指定SizeToContent属性,默认为“Manual”,因此它将使用*size of a window is determined by other properties, including Width, Height, MaxWidth, MaxHeight, MinWidth, and MinHeight. *从WPF Windows Overview开始,似乎其他属性是FrameworkElement: :MinHeight / Width和FrameworkElement :: MaxHeight。但由于Mins的默认值为0,因此Maxs为Infinity,而Width / Height为Nan ......这是怎么回事? WPF在哪里获得窗口大小?
任何指向正确方向的指标都将受到赞赏。
答案 0 :(得分:4)
如果未指定宽度和高度,WPF将使用主屏幕宽度的60%(实际显示窗口的位置)和60%的高度。这是由应用程序单例完成的,所有Windows最终都会注册自己。
答案 1 :(得分:1)
我在MSDN中找不到任何明确说明大小默认值的内容,但Top
,Left
和WindowStartupLocation
属性说明它们默认为正常的Win32默认值如果没有指定。我认为假设Height
和Width
属性也会这样做是合理的。
如果您不希望窗口发生这种情况,则必须明确设置Width
元素的Height
和SizeToContent
或Window
属性根据您的要求。您在Button
元素上设置的显式尺寸只会对Window
Window.SizeToContent = True
产生影响。
答案 2 :(得分:0)
我猜操作系统为窗口提供了这些值。它可能与Windows操作系统在上次关闭之前记住任何窗口的大小有关。*
同样地,我认为当没有指定尺寸时,窗口为窗口提供了默认的高度和宽度。
答案 3 :(得分:0)
我认为您所寻找的信息已隐藏在FrameworkElement.Width
(link)的文档中。
除了可接受的Double值之外,此属性也可以是Double.NaN。这是您指定自动调整大小行为的方式。在XAML中,将值设置为字符串“Auto”(不区分大小写)以启用自动调整大小行为。自动调整大小行为意味着元素将填充可用的宽度。 请注意,特定控件经常提供默认样式的默认值,这将禁用自动调整大小行为,除非专门重新启用。 [我的重点]
因此,在没有设置其他约束的情况下(例如MaxWidth
,MinWidth
,Width
等),我会期望窗口的宽度/高度。由窗口的默认样式决定。
修改强>
看起来它更可能来自Window
类本身调用的函数,该函数考虑了所有约束加上监视器大小。