2013-04-03 44 views
0

我有一個具有多個窗口的應用程序。當我從一個窗口移動到另一個窗口時,所有其他窗口都被隱藏。如何強制所有WPF窗口的大小相同

我遇到的問題是當我在窗口A中處於「恢復」狀態(即未最大化)時。然後我打開窗口B並最大化。當我關閉窗口B並返回窗口A時,我希望窗口A處於與設置窗口B相同的最大化狀態。

有沒有一個方便的方法來做到這一點,或者我必須讓每個窗口在維度發生變化時觸發事件,以便可以通知其他窗口並相應調整大小?

+0

你可以嘗試使用雙向綁定將窗口高度和寬度綁定到通用綁定目標 – Joel

回答

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(); 
相關問題