将我的应用程序的WPF窗口与屏幕的左边框对齐时,我的代码为窗口的Left属性返回负值(-7,这是不希望的)。 相同的代码在对等方的PC上返回零(按预期)。
显示比例已关闭。这是一个普通的96 DPI 1920 x 1200屏幕。
AFAIR它可以像预期的那样在我的PC上运行,当然我没有做任何更改;-)
所以
背景:该应用程序支持将窗口位置保存到“工作台”文件,然后将其再次加载到其他系统上。如果(0,0)在不同的系统上不相同,则很难实现。 (当然,需要考虑可用的屏幕。但这是另外一个问题。)
一些更奇怪的细节
因此,似乎存在一些特定于应用程序的缩放比例和偏移量,它们在检索和设置窗口大小和位置时是一致的,但与System.Windows.SystemParameters.WorkArea不匹配。
答案 0 :(得分:0)
作为解决方法,可以在帖子here中使用以下代码:
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;
}