13

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

在设计器中,窗口大小是正确的。但是当我运行应用程序时,它会更大。 在此处输入图像描述

编辑:另外,布局是Canvas.

经典主题:

在此处输入图像描述

编辑2:

运行 snoop 后(感谢 Zach),实际尺寸似乎是我指定的。但是在视觉工作室中,客户区比一个大。

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

编辑3:

<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

4 回答 4

8

我会在闲逛之后自己回答这个问题。

窗口的 ActualWith 和 ActualHeight 等于设计器中设置的 Width 和 Height。

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

使 Canvas 设计工作的方法。是在 Canvas 上设置尺寸,在窗口上删除尺寸并在窗口上相应地设置 SizeToContent。这样,cavnas 尺寸保持固定,窗口大小会根据主题边框的想法而变化。

于 2011-01-28T19:02:55.853 回答
1

仅仅因为您指定的尺寸考虑到了将从操作系统的当前主题中获取的边框...如果您设置 200x200,您将获得完整的空间..您不希望它减少到 190x190 框因为两边都有 5px 边框。这也将更改为操作系统上的当前主题,如 Aero、Classic 等。

于 2011-01-28T18:12:36.733 回答
1

窗口有一个DesignHeightDesignWidth设置吗?请参阅WPF 用户控件设计时间大小

编辑:我的下一个想法是尝试使用Snoop在运行时查看到底有什么不同。是大小、填充、边距还是其他?

于 2011-01-28T18:14:01.633 回答
0

我可能是在说显而易见的,但似乎 Windows 主题是不同的。如果您切换到 Windows 经典主题,它们将如何比较。

于 2011-01-28T18:13:14.593 回答