PRISM - 重用儿童区域的意见 - 可以做到吗?

时间:2011-01-27 16:16:19

标签: wpf mvvm prism

我是一个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“

这表明如果该视图声明了自己的区域,我就不能拥有相同视图的多个实例。

这是对的吗?

似乎是一个巨大的限制。

我希望我的应用程序具有高度模块化,并且可以让视图自己构成其他视图(通过区域)等。

或者我误读了文档?

1 个答案:

答案 0 :(得分:6)

您可以使用RegionScope创建由模块视图创建的区域的shell级区域的分隔。您创建的没有范围的任何区域都是“全局”,并且不支持在同一范围内具有两个具有相同名称的区域。

您可以在此MSDN文章中阅读有关区域范围的更多信息: http://msdn.microsoft.com/en-us/magazine/cc785479.aspx#id0090126