当您最大化表单或取消最大化时,是否会触发事件?
在你说Resize
或之前SizeChanged
:只有Size
实际改变才会被解雇.如果您的窗口大小与最大化窗口大小相等,则它们不会触发.位置看起来是下一个最好的选择,但这再次感觉就像巧合赌博.
在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私有成员,但没有公共属性来公开它们.
你如何检索正确的值?