2011-08-06 46 views
1

我對以下情況有兩個問題:爲什麼最初沒有將區域添加到區域集合中?查看區域中不顯示

爲什麼不在該地區顯示該視圖...或者我該如何解決該問題?

這是問題:在Prism for WPF中,我有一個窗口,就像一個彈出窗口。此窗口具有使用region屬性的用戶控件。出於某種原因,該窗口的區域沒有出現在區域集合中。

爲了讓窗口的區域進入區域集合,我通過代碼完成了它。在觸發此窗口的外觀的模塊,我做的:

IRegion region = new SingleActiveRegion(); 
myRegionManager.Regions.Add("MainWindowRegion", region); 
myContainer.Resolve<someViewModel>().Initialize(); 
SomeView someView = myContainer.Resolve<SomeView>(); 
SomeViewModel someViewModel = myContainer.Resolve<SomeViewModel>(); 
someView.DataContext = someViewModel; 
myRegionManager.Regions["MainWindowRegion"].add(someView, "SomeView"); 

目前該地區出現的區域集合中,與所有我的其他地區一起。但是,某些視圖從不在該區域中顯示。

回答

0

第一:

你在哪裏添加您的意見和的ViewModels到Unity?你應該這樣做,作爲你的模塊初始化的一部分。每個Prism模塊應該有一個實現IModule的類。

假設你已經做到了這一點:

讀碼,上面,我看到正在創建區域,但你沒有添加的XAML是要被綁定到該區域的控制。

例如,我希望看到在程序中運行以下:

<UserControl> 
<Grid> 
<ItemsControl Margin="0,20,0,0" cal:RegionManager.RegionName="MainWindowRegion" /> 
</Grid> 
</UserControl> 

這將創建MainWindowRegion並將其綁定到ItemsControl在頁面上。當這個用戶控件被加載時,它的區域將被註冊到Prism並被添加到默認RegionManager

如果您不得不手動創建自己的區域,那麼它可能不會綁定到控件,因此當您開始向區域添加視圖時,它們將不會顯示,因爲區域未綁定到控件。

望着view/viewmodel決議,還有一個更簡單的方法:

SomeView採取SomeViewModel參數的構造函數,然後,將其綁定到DataContext那裏。 Unity會看到SomeView有依賴關係並自動解決它...