我是一个 PRISM 新手,但我阅读了帮助文档,似乎无法找到如何实现以下功能(这是一个 WPF 应用程序)
我有一个 Shell
(窗口),它有 2 个区域,名为“region1”和“region2”。
在我唯一的模块的 Initialize
方法中,我向每个区域注册相同的 View :
regionViewRegistry.RegisterViewWithRegion("Region1", typeof(View1));
regionViewRegistry.RegisterViewWithRegion("Region2", typeof(View1));
当我运行它时,此时一切正常,因为它创建了 View1
的 2 个单独实例,并在每个区域中放置一个实例。
现在在 View1
中,我已经声明了自己的区域来注入(inject)小型 subview
<ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />
现在,当我运行非常简单的 PRISM 应用程序时,我收到以下异常消息:
"Region with the given name is already registered: MainRegion"
这表明如果该 View 声明了自己的区域,我就不能拥有同一 View 的多个实例。
这是正确的吗?
似乎是一个巨大的限制。
我希望我的应用程序是高度模块化的,并且让 View 由其他 View (通过区域)等组成。
或者我误读了文档?
最佳答案
您可以使用 RegionScope 将 shell 级区域与模块 View 创建的区域分开。您在没有范围的情况下创建的任何区域都是“全局”的,并且不支持在同一范围内拥有两个具有相同名称的区域。
您可以在这篇 MSDN 文章中阅读有关区域范围的更多信息: http://msdn.microsoft.com/en-us/magazine/cc785479.aspx#id0090126
关于wpf - PRISM - 子区域 View 的重用 - 可以做到吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818840/