C# 范围区域嵌套视图
我指的是线程。C# 范围区域嵌套视图,c#,wpf,prism,mef,regions,C#,Wpf,Prism,Mef,Regions,我指的是线程。 我有类似的场景,但有几个插件。该应用程序由几个模块组成,Shell定义了主要区域。每个模块都有一个视图(userControl)和viewmodel,视图根据需要加载到shell区域中。问题在于视图由子用户控件组成,每个子用户控件都有自己的ViewModel。因此,我选择在视图中定义的范围区域中注入子控件,因为我可以拥有视图的多个实例但不知何故,我无法使用MEF以下是伪代码和应用程序结构。 1.Shell已定义Mainregion。按需加载此主区域中的父视图。 2.父视图,其中F
我有类似的场景,但有几个插件。该应用程序由几个模块组成,Shell定义了主要区域。每个模块都有一个视图(userControl)和viewmodel,视图根据需要加载到shell区域中。问题在于视图由子用户控件组成,每个子用户控件都有自己的ViewModel。因此,我选择在视图中定义的范围区域中注入子控件,因为我可以拥有视图的多个实例
但不知何故,我无法使用MEF
以下是伪代码和应用程序结构。
1.Shell已定义Mainregion。按需加载此主区域中的父视图。
2.父视图,其中FooParent有一个xaml,我在其中定义了一个区域。
3.FooChildUsercontrol代码隐藏类用[Export]属性标记
4.FooParentModule有一个initialize方法,其中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实例的第一行在启动时初始化模块,并根据需要加载视图
你知道我在这里遗漏了什么吗?我找到了解决这个问题的办法。在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 ));
IRegionManager regionManager=ServiceLocator.Current.GetInstance();
RegionManager rm=新RegionManager();
RegionManager.SetRegionManager(this.FooChildContentControl,rm);
RegionManager.SetRegionName(this.FooChildContentControl,“FooChildRegion”);
rm.RegisterViewWithRegion(“FooChildRegion”,类型为(fooChildView));