【发布时间】:2021-06-24 01:08:13
【问题描述】:
在 prism 文档中,以某种方式创建了一个作用域 RegionManager:
IRegion detailsRegion = this.regionManager.Regions["DetailsRegion"];
View view = new View();
bool createRegionManagerScope = true;
IRegionManager detailsRegionManager = detailsRegion.Add(view, null,
createRegionManagerScope);
我有一个模块化应用程序,其中 view 位于 另一个模块,而 region 位于 主程序集中。每个模块中都有一些区域,我希望它们具有相同的视图,相同的视图然后位于主程序集中。这张图可以更好地解释它:
所以如果我想在模块中使用region.Add 方法,我无法实例化视图,因为它位于主程序集中。
我想到的另一种方法是使用视图发现,即使用RegisterViewWithRegion(string regionName, Type viewType),因为我可以在可以访问viewType 的主程序集中调用此方法,并使用我传递给此方法的regionName在模块中。但问题是模块中不能有同名的区域。
我最终做了我在this answer 中写的内容,但我的经理说我在视图模型中创建RegionManager 违反了 MVVM。
在这种情况下使用作用域RegionManager 的正确方法是什么?
【问题讨论】:
标签: c# wpf mvvm prism plugin-architecture