当使用以下XAML时,窗口大小不是5000×5000,而是button被裁剪的一些小窗口。
<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>
从我所知道的大小,我没有指定的SizeToContent属性,默认是“手动”,所以它会使用*窗口的大小由其他属性,包括宽度,高度,MaxWidth,MaxHeight,MinWidth和MinHeight 。 *从WPF Windows概述看来,其他属性是FrameworkElement :: MinHeight / Width和FrameworkElement :: MaxHeight。 但是,由于分钟的默认值为0,最大值是无穷大,宽度/高度是楠….发生了什么事? WPF在哪里获得窗口大小?
任何指向正确的方向将不胜感激。
如果未指定宽度和高度,则WPF将使用主屏幕宽度的60%(实际显示窗口的位置)和宽度的60%。 这是由所有Windows最终注册自己的应用程序单例完成的。
我无法在MSDN中找到任何明确指定默认大小的东西,但Top
, Left
和WindowStartupLocation
属性说明如果未指定,则默认为默认的常规Win32默认值。 我认为这是合理的假设Height
和Width
属性会做同样的。
如果您不希望发生这种情况,则必须根据您的要求明确设置Window
元素的Width
和Height
或SizeToContent
属性。 如果Window.SizeToContent = True
,则在Button
元素上设置的显式大小只会对Window
产生影响。
我猜操作系统已经提供了这些值的窗口。 这可能与Windows操作系统在上次关闭之前记住任何窗口大小有关。
同样的方式,我想窗口提供了一个默认的高度和宽度的窗口,当没有任何指定的尺寸。
我认为你正在寻找的信息被埋在了FrameworkElement.Width
( 链接 )的文档中。
除了可接受的Double值之外,该属性也可以是Double.NaN。 这是您如何指定自动调整大小的行为。 在XAML中,将值设置为字符串“Auto”(不区分大小写)以启用自动调整大小的行为。 自动调整大小的行为意味着元素将填充可用的宽度。 但请注意,特定的控件经常会以默认样式提供默认值,除非特别重新启用,否则将禁用自动调整大小行为。 [我的重点]
所以,从这个角度来看,当没有其他的约束条件时(比如MaxWidth
, MinWidth
, Width
等等),窗口的宽度/高度是由Window的默认样式决定的。
编辑:
看起来它更可能来自Window
类本身所调用的函数,该函数考虑了所有约束和监视器大小。