在棱镜文档RegionManager
中,以某种方式创建了一个作用域,如下所示:
IRegion detailsRegion = this.regionManager.Regions["DetailsRegion"];
View view = new View();
bool createRegionManagerScope = true;
IRegionManager detailsRegionManager = detailsRegion.Add(view, null,
createRegionManagerScope);
我有一个模块化应用程序,其中视图位于另一个模块中,并且该区域位于主程序集中。每个模块中都有一些区域,我希望它们具有相同的视图,然后相同的视图位于主程序集中。这张图可以更好地解释它:
因此,如果我想region.Add
在模块中使用该方法,我无法实例化视图,因为它位于主程序集中。
我想到的另一种方法是使用视图发现,即使用RegisterViewWithRegion(string regionName, Type viewType)
,因为我可以在我可以访问的主程序集中调用此方法viewType
,并使用regionName
我在模块中传递给此方法的方法。但问题是模块中不能有同名的区域。
我最终做了我在这个答案中写的,但是我的经理说我通过RegionManager
在视图模型中创建违反了 MVVM。
RegionManager
在这种情况下使用范围的正确方法是什么?