为什么运行时窗口较大?

时间:2011-01-28 18:10:20

标签: c# wpf dimensions

我的窗口设置为340 x 146像素,不可调整大小。

在设计师中,窗口大小是正确的。但是当我运行应用程序时它更大。 enter image description here

编辑:此外,布局为Canvas

经典主题:

enter image description here

EDIT2:

在运行窥探后(感谢Zach),看来实际尺寸是我指定的尺寸。 但是客户区比视觉工作室中的客户区要大。

我现在明白,当窗口大小固定到某些尺寸时,客户端大小会延伸。但是我认为这会使窗口中的Canvas布局无法使用。

EDIT3:

<Window x:Class="TI.Presentation.Views.AutentizationWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Authentication" Height="146" Width="340" ResizeMode="NoResize" Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}" >
    <Canvas>
        <Label Canvas.Left="12" Canvas.Top="12" FontSize="15" Width="217">Enter authentication code here:</Label>
        <TextBox Canvas.Left="12" Canvas.Top="38" Height="23" Name="code" Width="294" FontSize="14" />
        <Button Canvas.Top="67" Content="OK" Height="28" Width="100" Canvas.Left="206" FontSize="14" IsDefault="True" Click="OKClick" />
    </Canvas>
</Window>

4 个答案:

答案 0 :(得分:6)

我会在四处寻找之后自己回答。

窗口的ActualWith和ActualHeight等于设计器中设置的宽度和高度。

客户区域有哪些变化。客户端的尺寸将是窗口尺寸减去主题边框。但是,这会打破Canvas设计,因为它的绝对定位和画布尺寸会根据主题而改变。

使Canvas设计成功的方法。是在Canvas上设置尺寸,在窗口上移除尺寸并相应地在窗口上设置SizeToContent。这样,空腔尺寸保持固定,窗口尺寸根据主题边界的思考方式而变化。

答案 1 :(得分:1)

仅仅因为你指定剂量的大小考虑了将从操作系统的当前主题中获取的边界...如果你设置200x200,你将得到那个完整的空间......你不希望它被减少到190x190的盒子,因为5px边框两侧。而这也将改为操作系统的当前主题,如Aero,Classic等。

答案 2 :(得分:1)

窗口是否设置了DesignHeightDesignWidth?请参阅WPF UserControl Design Time Size

编辑:我的下一个想法是尝试使用Snoop在运行时查看究竟有什么不同。是尺寸,填充,边距还是其他什么?

答案 3 :(得分:0)

我可能会说明显而易见的,但看起来Windows主题是不同的。如果切换到Windows经典主题,他们如何比较。