0
我有一個具有多個窗口的應用程序。當我從一個窗口移動到另一個窗口時,所有其他窗口都被隱藏。如何強制所有WPF窗口的大小相同
我遇到的問題是當我在窗口A中處於「恢復」狀態(即未最大化)時。然後我打開窗口B並最大化。當我關閉窗口B並返回窗口A時,我希望窗口A處於與設置窗口B相同的最大化狀態。
有沒有一個方便的方法來做到這一點,或者我必須讓每個窗口在維度發生變化時觸發事件,以便可以通知其他窗口並相應調整大小?
我有一個具有多個窗口的應用程序。當我從一個窗口移動到另一個窗口時,所有其他窗口都被隱藏。如何強制所有WPF窗口的大小相同
我遇到的問題是當我在窗口A中處於「恢復」狀態(即未最大化)時。然後我打開窗口B並最大化。當我關閉窗口B並返回窗口A時,我希望窗口A處於與設置窗口B相同的最大化狀態。
有沒有一個方便的方法來做到這一點,或者我必須讓每個窗口在維度發生變化時觸發事件,以便可以通知其他窗口並相應調整大小?
查看關閉窗口的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();
你可以嘗試使用雙向綁定將窗口高度和寬度綁定到通用綁定目標 – Joel