我指的是帖子 View not connecting to ViewModel using MEF。
我有类似的场景,但有一些插件。该应用程序由几个模块组成,Shell已定义主要区域。每个模块都有一个视图(userControl)和viewmodel,视图按需加载到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实例的第一行是在启动时初始化模块并按需加载视图。
知道我在这里缺少什么吗?
答案 0 :(得分:1)
我为此做了一个工作。在Parent中,我将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 ));