我是一个PRISM新手,但我已经阅读了帮助文档,似乎无法找到如何实现以下(这是一个WPF应用程序)
我有一个Shell
(窗口),有2个区域叫做'region1'和'region2'。
在我唯一的模块的Initialize
方法中,我正在为每个区域注册相同的视图:
regionViewRegistry.RegisterViewWithRegion("Region1", typeof(View1));
regionViewRegistry.RegisterViewWithRegion("Region2", typeof(View1));
当我运行它时,此时一切正常,因为它创建了View1
的2个单独实例,并在每个区域中放置了一个。
现在在View1
我已经宣布了自己的区域来注入小的子视图
<ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />
现在,当我运行非常简单的PRISM应用程序时,我收到以下异常消息:
“具有给定名称的区域已经存在 注册:MainRegion“
这表明如果该视图声明了自己的区域,我就不能拥有相同视图的多个实例。
这是对的吗?
似乎是一个巨大的限制。
我希望我的应用程序具有高度模块化,并且可以让视图自己构成其他视图(通过区域)等。
或者我误读了文档?
答案 0 :(得分:6)
您可以使用RegionScope创建由模块视图创建的区域的shell级区域的分隔。您创建的没有范围的任何区域都是“全局”,并且不支持在同一范围内具有两个具有相同名称的区域。
您可以在此MSDN文章中阅读有关区域范围的更多信息: http://msdn.microsoft.com/en-us/magazine/cc785479.aspx#id0090126