我有一个有多个窗口的应用程序。当我从一个窗口移动到另一个窗口时,所有其他窗口都被隐藏了。
我遇到的问题是当我从处于“已恢复”状态的窗口 A 开始时(即未最大化)。然后我打开窗口 B 并最大化它。当我关闭窗口 B 并返回窗口 A 时,我希望窗口 A 处于与我设置窗口 B 相同的最大化状态。
有没有一种方便的方法可以做到这一点,或者我是否必须在每个窗口的尺寸发生变化时触发事件,以便可以通知其他窗口并相应地调整大小?
我有一个有多个窗口的应用程序。当我从一个窗口移动到另一个窗口时,所有其他窗口都被隐藏了。
我遇到的问题是当我从处于“已恢复”状态的窗口 A 开始时(即未最大化)。然后我打开窗口 B 并最大化它。当我关闭窗口 B 并返回窗口 A 时,我希望窗口 A 处于与我设置窗口 B 相同的最大化状态。
有没有一种方便的方法可以做到这一点,或者我是否必须在每个窗口的尺寸发生变化时触发事件,以便可以通知其他窗口并相应地调整大小?
查看WindowState
关闭窗口的属性并将其设置为即将显示的窗口。
可以在此处找到可能的值,但应该只是以下情况:
window2.WindowState = window1.WindowState;
操作编辑:
这行得通。这是我围绕这个建议构建的简单解决方案:
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();