该项目基于 PRISM。
我在 Shell 的 TabControl
中有一个主要区域。
<!-- Main Region : A tab control -->
<TabControl prism:RegionManager.RegionName="MainRegion" >
</TabControl>
然后,我有几个模块
,它们都包含相同的 View 。并且必须添加到选项卡控件区域。
|_ModuleA
| |_ViewA
|
|_ModuleB
|_ViewB
请检查图像。在选项卡ModuleA
中,它显示在选项卡内容的左侧ViewA
,右侧是通用 View ,因为所有选项卡必须显示相同的UI。
我该怎么做?
最佳答案
我想“lecrank”已经回答了这个问题。在其他 Region 或 View 中添加 Region 是没有问题的。我在我的项目中做了什么:
- 每个模块在构造函数中接收 IRegionManager 和 IEventAggregator 对象的副本(我使用 MEF)
- 在
Initialize()
函数中,每个模块注册它自己的区域和它自己的 View 等等... - 每当事件或程序流应该传递给另一个模块(例如)时,我只是 .Publish() 带有参数的预定义事件(CompositePresentationEvent)。
- Shell 本身只是一个空模板,它只定义了几个“全局”区域(如您场景中的 TabControl),其上显示的所有内容都来自不同的模块 View ,而不是在 Shell 类甚至包含项目的 Shell 中实现。
因此,请随意在其他模块中定义和实现区域和 View - 只需将 IRegionManager 和 IEventAggregator 实例以某种方式传递到模块类中即可。
关于c# - PRISM:一个区域中的嵌套区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446919/