0

複数のウィンドウを持つアプリケーションがあります。ウィンドウからウィンドウに移動すると、他のすべてのウィンドウが非表示になります。

私が抱えている問題は、「復元」状態にある (つまり、最大化されていない) ウィンドウ A で開始したときです。次に、ウィンドウ B を開いて最大化します。ウィンドウ B を閉じてウィンドウ A に戻るとき、ウィンドウ A をウィンドウ B を設定したのと同じ最大化状態にする必要があります。

これを行う便利な方法はありますか、またはサイズが変更されたときに各ウィンドウにイベントを発生させて、他のウィンドウに通知し、それに応じてサイズを変更できるようにする必要がありますか?

4

1 に答える 1

3

閉じるウィンドウのプロパティを見てWindowState、表示しようとしているウィンドウに設定します。

可能な値はここで見つけることができますが、単に次の場合である必要があります:

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();
于 2013-04-03T10:30:40.323 に答える