PRISM:区域中的嵌套区域

时间:2012-02-25 18:43:30

标签: c# wpf module prism region

该项目以PRISM为基础。

我在Shell的TabControl中有一个主要区域。

        <!-- Main Region : A tab control -->
        <TabControl prism:RegionManager.RegionName="MainRegion" >
        </TabControl>

然后,我有几个Modules,其中所有这些都包含相同的视图。并且必须添加到选项卡控件区域。

|_ModuleA
| |_ViewA
|
|_ModuleB
  |_ViewB

请检查图像。在标签ModuleA中,它显示在标签内容ViewA的左侧,右侧是通用视图,因为所有标签必须显示相同的用户界面。

enter image description here

我该怎么做?

2 个答案:

答案 0 :(得分:3)

我猜'lecrank'已经回答了这个问题。在其他Region或View中添加Region没有问题。我在我的项目中做了什么:

  • 每个模块都在构造函数中接收IRegionManager和IEventAggregator对象的副本(我使用MEF)
  • Initialize()函数中,每个模块都注册它拥有自己的视图等区域,等等......
  • 每当事件或程序流程应该传递给另一个模块(例如),那么我只是.Publish()带参数的预定义事件(CompositePresentationEvent)。
  • Shell它只是空模板,它只定义了几个'全局'区域(如场景中的TabControl),其上显示的所有内容都来自不同的模块视图,而不是在Shell类中实现,甚至在包含项目的Shell中实现。

所以随意在另一个模块中定义和实现区域和视图 - 只需将IRegionManager和IEventAggregator实例以某种方式传递给Module类。

答案 1 :(得分:1)

您的问题有点奇怪,但如果我没有弄错,您应该寻找复合演示者&#39;。向区域管理员注册新区域的演示者,其中可以显示其他视图。你也可以在一个区域内建立一个区域。有关更多信息,请参阅http://msdn.microsoft.com/en-us/magazine/cc785479.aspx

找到Prism答案的好地方是在compositewpf codeplex网站上,有人问同样的问题:http://compositewpf.codeplex.com/discussions/273120