我有一个有多个窗口的应用程序。当我从一个窗口移动到另一个窗口时,所有其他窗口都被隐藏。
我遇到的问题是当我在窗口A中启动时,它处于“恢复”状态(即未最大化)。然后我打开Window B并最大化它。当我关闭Window B并返回到窗口A时,我希望窗口A处于与设置Window B相同的最大化状态。
有没有方便的方法,或者我必须让每个窗口在更改尺寸时触发事件,以便可以通知其他窗口并相应调整大小?
答案 0 :(得分:3)
查看关闭窗口的WindowState
属性,并将其设置为即将显示的窗口。
可以找到here的可能值,但应该是以下情况:
window2.WindowState = window1.WindowState;
OP编辑:
这很有用。这是我围绕这个建议构建的简单解决方案:
public static class WindowStateManager
{
public static WindowState _state;
private static double _height;
private static double _width;
private static double _left;
private static double _top;
public static void SetState(this Window window)
{
_state = window.WindowState;
_height = window.Height;
_width = window.Width;
_left = window.Left;
_top = window.Top;
}
public static void ApplyState(this Window window)
{
window.WindowState = _state;
window.Height = _height;
window.Width = _width;
window.Left = _left;
window.Top = _top;
}
}
对于我有兴趣应用它的每个窗口,我只需将以下内容添加到构造函数中:
this.Activated += (s, a) => this.ApplyState();
this.LocationChanged += (s, a) => this.SetState();