2009-09-30 55 views
1

我正在處理包含多個內容區域的應用程序。我想要實現一種行爲,以響應用戶輸入,可以切換這些內容區域中的任何一個以適應整個應用程序窗口,並且可以選擇再次回到其原始位置。我嘗試了幾種方法,但他們都不適合我。這裏就是我試圖做的:如何使一塊WPF內容佔用整個應用程序窗口

  1. 使用ClipToBoundsProperty上我想使「全屏」的內容:不工作,因爲只有CanvasPanel似乎完全尊重這個屬性。該應用程序需要進行本地化,所以我真的想避免CanvasPanel。
  2. 使用網格並摺疊其他內容區域,使得只有我想看到的內容區域可見,因此佔據了整個屏幕:這可能會起作用,但實施起來並不容易,但不易維護。 「全屏」內容區域可能有多個級別,例如駐留在Tabcontrol內,因此我必須隱藏標題標題等。
  3. 在單獨的視圖中重建內容區域,並在隱藏其他視圖時顯示它:看起來很容易處理DataTemplates和ViewModel對象,但是使用這種方法不保留任何GUI/View唯一狀態。
  4. 以某種方式將圖形界面/視圖「提升」到獨立視圖並顯示它,同時隱藏其餘部分:我不知道如何做到這一點,或者即使這是可能的。

無論如何,如果有人知道更好的方法,我很想知道它。

非常感謝!

回答

1

關於您的第四個選項:您可以通過調用「myWindow.Hide()」來隱藏任何窗口,它將保留在內存中,但用戶將無法看到它。當你想再次顯示時,只需調用「myWindow.Show()」。

或者,您可以嘗試使用Popup控件,它將放置在所有其他內容上。請參閱:

http://roecode.wordpress.com/2008/01/07/wpf-popup-control-part-1-the-quick-and-dirty-way/ http://dotnetslackers.com/Community/blogs/bmains/archive/2007/07/26/Introduction-to-WPF-Popups.aspx

+1

感謝您的回覆你好。我當然可以使用Popup控件。但問題是用Popup控件填充什麼。如果我簡單地爲其內容屬性分配一些現有的內容,框架就會抱怨後者已經在邏輯樹中,我應該先刪除它。我沒有任何手動修改邏輯樹的經驗,所以我甚至不確定這是否是一個好主意。如果我只是再次從我的數據模型對象實例化內容,那麼我會遇到在原始內容上丟失任何GUI狀態的問題。 – 2009-09-30 20:45:10

相關問題