作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将应用程序的 WPF 窗口与屏幕左边框对齐时,我的代码为窗口的 Left 属性返回负值(-7,不是预期的值)。相同的代码在对等方的 PC 上返回零(如预期)。
显示缩放已关闭。这是一个普通的 96 DPI 1920 x 1200 屏幕。
AFAIR 它不久前在我的电脑上按预期运行,当然我没有更改任何内容;-)
所以
背景:应用程序支持将窗口位置保存到“工作台”文件并在不同的系统上再次加载。如果 (0,0) 在不同系统上不相同,则很难实现这一点。 (当然需要考虑可用的屏幕。但这是一个不同的故事。y)
一些更奇怪的细节
System.Windows.SystemParameters.WorkArea.TopLeft
为 (0,0)(如预期)。System.Windows.SystemParameters.WorkArea
的其他参数也符合预期(宽度和高度)。因此,似乎存在一些特定于应用程序的缩放和偏移,它们在检索和设置窗口大小和位置方面是一致的,但与System.Windows.SystemParameters.WorkArea
不匹配。
最佳答案
可以使用以下代码作为解决方法:
private double GetWindowLeft(Window window)
{
if (window.WindowState == WindowState.Maximized)
{
var leftField = typeof(Window).GetField("_actualLeft", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
return (double)leftField.GetValue(window);
}
else
return window.Left;
}
关于WPF 窗口 Left 属性与左屏幕边框对齐后具有负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51479333/
我是一名优秀的程序员,十分优秀!