2011-03-01 70 views
0

我正在創建一個Prism 4演示應用程序來學習新框架,重點關注視圖切換。該應用程序有幾個區域,其中之一是一個ItemsControl,它包含當前活動模塊中的一個或多個按鈕。棱鏡4:如何隱藏ItemsControl中的項目?

我在每個模塊的Initilize()方法中註冊區域管理器的按鈕。以下是第一個模塊的註冊碼:

RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton1)); 
RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton2)); 

第二個模塊以相同的方式註冊其按鈕。我使用RequestNavigate()在兩個模塊之間切換。

這是我的問題:這兩個模塊的按鈕在ItemsControl中都可見,而不是僅在活動模塊中的按鈕。我考慮將ItemsControl更改爲ContentControl並將按鈕放入StackPanel,但由於我不會在這裏遇到你,因此這對我無效。我需要做的是兩種:

  • Load當一個模塊被激活的按鈕,卸載它們,當我切換到另一個模塊,或

  • 顯示的按鈕時,模塊被激活,並在切換到其他模塊時隱藏它們。

我該如何在棱鏡4中做到這一點?謝謝你的幫助。

回答

2

我找到了我的答案。在視圖或其視圖模型上實現接口IRegionMemberLifetime。該接口由一個只讀的布爾屬性組成,KeepAlive。如果該屬性設置爲true,則視圖將在用戶離開之後保持活動狀態。如果該屬性設置爲false,則該視圖將被卸載。請參閱「Microsoft Prism開發人員指南」(第4版),第9頁。 012.