2014-12-04 103 views
0

我指的是線程 View not connecting to ViewModel using MEF

我有類似的情況,但幾個插件。該應用程序由幾個模塊組成,Shell定義了主要區域。每個模塊都有一個視圖(用戶控件)和視圖模型,視圖按需加載到外殼區域。問題是視圖由每個都有自己的ViewModel的子用戶控件組成。所以我選擇在視圖中定義的作用域區域中注入子控件,因爲我可以擁有多個View的實例。
但不知何故,我沒有通過使用MEF。

以下是僞代碼和應用程​​序結構。

1. Shell定義了Mainregion。父視圖按需加載在這個MainRegion中。
2.父視圖FooParent有一個xaml,我在其中定義一個區域。
<ContentControl prism:RegionManager.RegionName ="FooChildRegion" />
3.類後面的FooChildUsercontrol代碼標有[Export]屬性。
4. FooParentModule具有帶有regionmanager進口構造
5.代碼模塊中的初始化方法
作用域區域嵌套視圖

IRegion foochildregion = this._regionManager.Regions["FooChildRegion"]; //This blows. 
FooChildView fooChildView = new FooChildView(); 
IRegionManager allocationViewRegionManager = foochildregion .Add(fooChildView , null, true); 
foochildregion .Activate(fooChildView); 

用於獲取例如用於FooChildRegion第一行吹作爲模塊在啓動時初始化並一個初始化方法該視圖按需加載。

任何想法我在這裏失蹤?

回答

1

我爲此得到了解決辦法。在父我所定義的ContentControl

<ContentControl x:Name="FooChildContentControl" /> 

然後在代碼家長控制的背後,我創建regionManager的新實例,並設置爲子控件作爲

IRegionManager regionManager = ServiceLocator.Current.GetInstance<IRegionManager>(); 
RegionManager rm = new RegionManager(); 
RegionManager.SetRegionManager(this.FooChildContentControl, rm); 
RegionManager.SetRegionName(this.FooChildContentControl, "FooChildRegion"); 
rm.RegisterViewWithRegion("FooChildRegion", typeof(fooChildView));