首页 > 解决方案 > 为什么 Window.Height 和 Window.Width 不准确?(C#,WPF)

问题描述

我注意到在将窗口高度和宽度(或在这方面的 Min/MaxHeight 和 Min/MaxWidth)设置为特定值(如 800x450)时,窗口本身可以小于设置值。这些值真正准确的唯一时间是在设置WindowStyleto时None

在此处输入图像描述

主窗口:

SecondWindow(背景为浅蓝色)

是什么导致窗口小于预期?高度和宽度总是相差 7px 和 14px?

标签: c#wpfwindowheightwidth

解决方案


它是旧的、传统的窗口边界(位置和大小)和“扩展框架边界”之间的差距。后者实际上是可见的窗口边界,可以通过DwmGetWindowAttribute函数和DWMWA_EXTENDED_FRAME_BOUNDS获得。在 WPF 的情况下,这两个边界匹配 whenWindowStyle=NoneAllowsTransparency=True.

据我所知,当显示器 DPI 为 96(默认,100%)时,间隙的厚度为 7px(左、右、下),并随着显示器 DPI 的增加而增加。通过搜索上述关键字,您可以找到一些解决这一差距的技巧。


推荐阅读