2009-09-17 75 views
1

使用以下XAML时,窗口大小不是5000x5000,而是一些裁剪按钮的小窗口。未指定SizeToContent时的窗口大小

<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属性,默认为“手动”,所以它会使用*size of a window is determined by other properties, including Width, Height, MaxWidth, MaxHeight, MinWidth, and MinHeight. *WPF Windows Overview,似乎与其他属性是FrameworkElement的::了minHeight /宽,和FrameworkElement :: MaxHeight。但是因为Mins的默认值是0,Maxs是无穷大,宽度/高度是Nan ....发生了什么事? WPF在哪里获得窗口大小?

任何指向正确的方向将不胜感激。

回答

4

如果未指定宽度和高度,则WPF将使用主屏幕(实际显示窗口的位置)的60%和其高度的60%。这由所有Windows最终注册自己的应用程序单例完成。

0

我想操作系统已经提供了这些值的窗口。它可能与Windows操作系统在最后一次关闭之前记住任何窗口的大小有关。*

同样的方式,我认为窗口在没有指定尺寸的情况下为窗口提供默认高度和宽度。

  • 你可以用记事本试一下。打开它。调整它的大小。关闭它。现在再次打开它。嗯..
+0

不是一个真正的答案。这是如何定义“手动”设置(当手动调整大小时的窗口大小)。问题在于它是从哪里获得的。 – moogs 2009-09-25 07:09:47

+0

记事本正在写入并将其位置写入注册表:[HKEY_CURRENT_USER \ Software \ Microsoft \ Notepad]这是包括第三方在内的大多数应用程序的最佳实践。 – bitbonk 2009-10-01 09:34:30

0

我认为你要找的信息被埋在FrameworkElement.Widthlink)的文档中。

除了可接受的Double值之外,该属性也可以是Double.NaN。这是您如何指定自动调整大小的行为。在XAML中,将值设置为字符串“Auto”(不区分大小写)以启用自动调整大小行为。自动调整大小行为意味着元素将填充可用的宽度。 但请注意,特定的控件经常会以其默认样式提供默认值,除非专门重新启用它,否则将禁用自动调整大小行为。 [我的重点]

所以,从这个,我希望的是,窗口的宽度/高度有设置(如MaxWidthMinWidthWidth等)由确定没有其他约束窗口的默认样式。

编辑:

看起来它更可能是来自一个由Window类本身,考虑到所有的约束显示器大小调用的函数。

1

我在MSDN中找不到明确指定默认大小的任何内容,但Top,LeftWindowStartupLocation属性说明指出,如果未指定,它们默认为正常的Win32默认值。我认为这是合理的假设HeightWidth属性会做同样的。

如果你不希望这样的事情发生了你的窗口,那么你必须明确地设置要么WidthHeight或根据您的要求Window元素的SizeToContent财产。如果Window.SizeToContent = True,您在Button元素上设置的显式大小仅对Window有效。

+0

应该说“如果Window.SizeToContent = WidthAndHeight。” SizeToContent接受一个枚举值,而不是布尔值。 (我首先假定它是布尔值)。 – stone 2010-07-23 18:29:56

+0

这取决于内容。如果窗口是某种对话框,我会设置'SizeToContent = WidthAndHeight',但是对于普通的应用程序UI窗口来说'SizeToContent = Manual'。 – 2010-07-24 08:18:21

相关问题