0

我有一个有多个窗口的应用程序。当我从一个窗口移动到另一个窗口时,所有其他窗口都被隐藏了。

我遇到的问题是当我从处于“已恢复”状态的窗口 A 开始时(即未最大化)。然后我打开窗口 B 并最大化它。当我关闭窗口 B 并返回窗口 A 时,我希望窗口 A 处于与我设置窗口 B 相同的最大化状态。

有没有一种方便的方法可以做到这一点,或者我是否必须在每个窗口的尺寸发生变化时触发事件,以便可以通知其他窗口并相应地调整大小?

4

1 回答 1

3

查看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();
于 2013-04-03T10:30:40.323 回答