为什么 Window.Height 和 Window.Width 不准确? (C#, WPF)

Why are Window.Height and Window.Width not exact? (C#, WPF)

我注意到在将 windows 高度和宽度(或 Min/MaxHeight 和 Min/MaxWidth 在这方面)设置为特定值(如 800x450)时 window 本身可以小于设定值。只有在将 WindowStyle 设置为 None.

时,这些值才真正准确

主窗口:

SecondWindow(背景中的浅蓝色)

是什么导致 window 比预期的要小?另外,它是否总是高度相差 7px,宽度相差 14px?

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

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