2010-02-01 46 views
5

我需要讓我的應用程序如下(C#WPF應用程序):啓用最大化,最小化和WPF還原窗口(手動調整大小是禁用)

  1. 擁有1024 * 768
  2. 正常大小用戶可以最大限度的應用
  3. 用戶可以最大限度地減少應用程序
  4. 用戶可以恢復
  5. 用戶無法手動draging其邊框調整應用程序的應用(1024 * 768)。

沒有任何ResizeMode滿足所有這些要求。有什麼辦法可以做嗎?

+2

通過添加窗口爆破性質'身高=「1024」 WIDTH =「768」 ResizeMode =「CanMinimize」'你可以實現除第2點以外的所有內容。 – ChrisF 2010-02-01 12:29:34

+0

您能否告訴我們爲什麼您要將窗口固定在某個尺寸?它可以幫助我們想出一些解決方案。 – 2010-02-02 11:52:18

+0

我正在研究呈現醫學圖像的醫療計劃。傳統程序的固定大小爲1024 * 768。因此,對於老客戶,我們需要將其作爲基本解決方案進行維護。 我們希望能夠選擇最大化窗口,以便我們可以在某些分辨率下檢查程序,無需測試所呈現圖像的質量,以防用戶將應用程序調整爲非標準尺寸 – Nir 2010-02-02 14:22:30

回答

0

您可以偵聽Window.SizeChanged事件,並在處理程序內部手動將寬度和高度設置回1027和768.它仍然允許用戶拖動窗口的邊緣來調整大小,但是隨後窗口返回到它的設置尺寸。這樣做的缺點是,無論用戶何時嘗試調整大小,窗口都會「癲癇發作」 - 而不是最美麗的事情。正常工作最大限度地減少和最大化工作。

+0

謝謝,我已經試過那個。我遇到的閃爍(「癲癇」)讓我在一開始就留下了這個想法。 – Nir 2010-02-02 14:23:57

5

我終於找到了一個相對體面的解決方案。

想法是覆蓋窗口的事件,取消最小/最大約束並刷新它。

如果沒有最大化的窗口,我們簡單地套用背面的最小/最大約束

protected override void OnStateChanged(EventArgs e) 
    { 
     if (WindowState == WindowState.Maximized) 
     { 
      MinWidth = 0; 
      MinHeight = 0; 
      MaxWidth = int.MaxValue; 
      MaxHeight = int.MaxValue; 

      if (!m_isDuringMaximizing) 
      { 
       m_isDuringMaximizing = true; 
       WindowState = WindowState.Normal; 
       WindowState = WindowState.Maximized; 
       m_isDuringMaximizing = false; 
      } 
     } 
     else if (!m_isDuringMaximizing) 
     { 
      MinWidth = 1024; 
      MinHeight = 768; 
      MaxWidth = 1024; 
      MaxHeight = 768; 
     } 

     base.OnStateChanged(e); 
    } 
+0

我知道5年後我問了這個問題,但是這裏是什麼'm_isDuringMaximizing'? – 2015-06-30 01:03:03

相關問題