我需要知道最大化窗口的位置.
WPF窗口具有Top和Left属性,用于指定窗口的位置.但是,如果最大化窗口,这些属性会使窗口的值保持正常状态.
如果您在单屏设置上运行,则最大化位置自然是(0,0).但是,如果您有多个屏幕不一定是真的.如果在主屏幕上最大化窗口,窗口将只有位置(0,0).
那么......有没有办法找出最大化窗口的位置(最好是与Top和Left属性相同的逻辑单元)?
在WPF中检索窗口位置的正确方法是什么?
这是我做的一些尝试.第一次尝试,显而易见
Point GetPosition(Window win)
{
return new Point(win.Top, win.Left);
}
Run Code Online (Sandbox Code Playgroud)
但是当窗口最大化时,这会返回"错误"的位置.第二次尝试:
Point GetPosition(Window win)
{
if (win.WindowState == WindowState.Maximized)
return new Point(0, 0);
else
return new Point(win.Top, win.Left);
}
Run Code Online (Sandbox Code Playgroud)
几乎在那里,但仍然存在一个问题:当你有两个(或更多)屏幕并且窗口在第二个屏幕中最大化时,你会得到一个(0,0)位置,它不会反映窗口的实际位置.
我注意到Window有_actualTop和_actualLeft私有成员,但没有公共属性来公开它们.
你如何检索正确的值?