2011-03-26 69 views
1

我有一個應用程序,到目前爲止只有2個視圖。視圖1是一個列表,第二個是詳細視圖(一旦你在視圖1中選擇了一個項目。)如何在MEF和WPF的棱鏡中添加視圖到項目控件

我在我的Prism shell中設置了一個區域,並且可以加載我的模塊。因爲只有模塊1加載最初,當我從1選擇一個項目,然後我想導航到2(這將顯示在我的項目控制(順便說一下,這是一個選項卡控件)(0127)。問題我有,我要麼a)兩個視圖最初顯示在我的選項卡控制

b)如果我更改視圖b的模塊上的導出屬性按需初始化,當我點擊導航到視圖b沒有任何反應。

任何幫助將不勝感激。謝謝。

+0

我認爲這與我一起使用視圖發現而不是視圖注入。認爲我應該使用視圖注入。只需要弄清楚如何讓視圖模型1調用容器來創建視圖2.我想。 – obaylis 2011-03-28 07:32:20

回答

0

我已經讓所有的意見被發現,但是,鑑於initalisation我停用所有的觀點接受一個我感興趣的是解決此得到。當然,我正在尋找一種更好的方法:)

foreach (var view in RegionManager.Regions["RegionFoo"].Views) 
{ 
    if (view.GetType() == initialViewType) 
    { 
    RegionManager.Regions["RegionFoo"].Activate(view); 
    } 
    else 
    { 
    RegionManager.Regions["RegionFoo"].Deactivate(view); 
    } 
} 

我在該地區的註冊視圖註冊後進行此操作。 initialViewType是您希望查找的視圖的類型。這只是假設的一個單例。

+0

感謝您的回覆。我改變了我的代碼,在視圖1的viewmodel中注入了新的視圖2。現在的問題是,我需要通過我的容器創建新視圖2 - 不知道如何在視圖模型中獲取容器上的處理程序。 regionManager.Regions [「MainRegion」]。Add(new Views.ReleaseView()); regionManager.RequestNavigate(「MainRegion」,new Uri(「ReleaseView」,UriKind.Relative));' – obaylis 2011-03-28 09:49:23

+0

結束從我的引導程序導出CompositionContainer,然後導入它以在視圖模型中使用。再次感謝。 – obaylis 2011-03-29 15:16:21

+0

是的,我也使用過這種技術。 :) – 2011-03-31 15:41:04