如何强制所有WPF窗口大小相同

时间:2013-04-03 10:27:34

标签: c# wpf window dimensions

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

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

有没有方便的方法,或者我必须让每个窗口在更改尺寸时触发事件,以便可以通知其他窗口并相应调整大小?

1 个答案:

答案 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();