Wpf PRISM-重用具有子区域的视图-可以这样做吗?

Wpf PRISM-重用具有子区域的视图-可以这样做吗?,wpf,mvvm,prism,Wpf,Mvvm,Prism,我有点像PRISM新手,但我已经阅读了帮助文档,似乎无法找到如何实现以下功能(这是一个WPF应用程序) 我有一个Shell(窗口),它有两个区域,分别称为“region1”和“region2”。 在我的唯一模块的Initialize方法中,我在每个区域注册相同的视图: regionViewRegistry.RegisterViewWithRegion("Region1", typeof(View1)); regionViewRegistry.RegisterViewWithRegion("Reg

我有点像PRISM新手,但我已经阅读了帮助文档,似乎无法找到如何实现以下功能(这是一个WPF应用程序)

我有一个
Shell
(窗口),它有两个区域,分别称为“region1”和“region2”。 在我的唯一模块的
Initialize
方法中,我在每个区域注册相同的视图:

regionViewRegistry.RegisterViewWithRegion("Region1", typeof(View1));
regionViewRegistry.RegisterViewWithRegion("Region2", typeof(View1));
当我运行它时,此时一切正常,因为它创建了两个独立的
View1
实例,并在每个区域放置一个实例

现在,在
View1
中,我已经声明了它自己的区域,用于注入小的子视图

<ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />

现在,当我运行非常简单的PRISM应用程序时,我收到以下异常消息:

“具有给定名称的区域已存在 注册:缅因州“

这意味着,如果同一个视图声明了自己的区域,我就不能拥有该视图的多个实例

这是正确的吗

似乎是一个巨大的限制

我希望我的应用程序是高度模块化的,并且让视图由其他视图(通过区域)等组成


还是我看错了文档?

您可以使用RegionScope将外壳级别的区域与模块视图创建的区域分开。您创建的任何没有作用域的区域都是“全局”的,不支持在同一作用域中有两个同名区域

您可以在这篇MSDN文章中阅读有关区域作用域的更多信息:

看看我的答案,看看子视图如何获得本地范围的
RegionManager
(从这些范围的子视图打开其他视图时非常有用)任何人都可以添加一个工作链接,因为上面的链接似乎断开了:(@HimeshSameera我想这就是链接所指向的: