What is the correct way to retrieve a window's position in WPF?
Here's some attempts I made. First attempt, the obvious
Point GetPosition(Window win)
{
return new Point(win.Top, win.Left);
}
but this returns the "wrong" position when the window is maximized. Second attempt:
Point GetPosition(Window win)
{
if (win.WindowState == WindowState.Maximized)
return new Point(0, 0);
else
return new Point(win.Top, win.Left);
}
Almost there, but there is still an issue: when you have two (or more) screens and the window is maximized in the second screen you get a (0, 0) position that does not reflect the window's actual position.
I noticed that Window has _actualTop and _actualLeft private members, but no public property to expose them.
How do you retrieve the correct value?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…