【问题标题】:How do I force all WPF windows to be the same size如何强制所有 WPF 窗口大小相同
【发布时间】:2013-03-24 23:21:00
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以尝试使用双向绑定将窗口高度和宽度绑定到一个常见的绑定目标

标签: c# wpf window dimensions


【解决方案1】:

查看关闭窗口的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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多