WPF和WIndows 10.窗户周围的隐形边界?

时间:2016-02-07 22:09:50

标签: c# wpf windows-10

当我试图将我的窗口与显示器的一侧或一角对齐时,我发现屏幕边缘和窗口边缘之间存在某种填充。 我从模板创建了新的wpf项目,在构造函数中只添加了两行并得到了这个:



为什么它不适合屏幕边缘?当我尝试将窗口放到右下角时出现同样的问题:

Rect workArea = SystemParameters.WorkArea;
Left = workArea.Location.X + workArea.Width - Width;
Top = workArea.Location.Y + workArea.Height - Height;

看起来窗口有7px边框(就像在win7上一样)但在win10上看不见。另外,我发现如果我将WindowStyle设置为WindowStyle.NoneResizeMode设置为ResizeMode.NoResize,系统会正确放置窗口,但这不是我需要的。在win7上,同样的程序按预期工作。

对于cource我可以将Left属性设置为-7,但它不是解决方案。我怎样才能正确设置窗口位置,以便在win7和win10上看起来都很好?

2 个答案:

答案 0 :(得分:7)

左/右/底部的可调整大小的边框现在在Windows 10上不可见,并且该边框是该间隙所在的位置。如果您将窗口置于屏幕中间,并将鼠标拖动到窗口的左边缘,您将看到光标更改为调整大小的光标,使其超出窗口边缘8个像素。这告诉你边框仍然存在。

您可以使用普通GetWindowRect函数和DwmGetWindowAttribute函数的使用以及DWMWA_EXTENDED_FRAME_BOUNDS参数的组合来获取感染。

答案 1 :(得分:1)

他们保持指标相同(例如,注册表中的PaddedBorderWidth仍为-60),并在主题(“Aero”)中完全实现清晰的调整大小句柄。它不是玻璃,它与Office 2013呈现它们的方式完全不可见。您的应用程序将字面在Windows 7和10上以相同的像素坐标绘制,只有Windows 7将具有填补该空白的玻璃效果。