PRISM WPF(MEF)-另一个Shell中的Shell



我的应用程序中有一些重要的逻辑组件,我计划将它们创建为具有自己模块的不同PRISM外壳。尽管它们目前可以是独立的模块,但我们可能会在稍后阶段收到从一个大表单中启动所有模块的请求。因此,如果发生这种情况,我将不得不从更大的外壳中发射我现在要写的棱镜"外壳"。这可能吗?我可以在另一个外壳中加载一个外壳吗(可能就像每个内壳的标签一样)。如果我不能,我现在可以考虑的一般替代方案或任何设计建议是什么。我仍处于应用程序的设计阶段,如果PRISM一旦实现就变得非常僵化,我可以放弃它。

为了在一个单独的窗口上加载每个Shell,您可以签出下面的帖子,该帖子显示了Prism-v2中创建多Shell应用程序的示例。然而,将其调整为棱镜4:非常简单

  • 在Prism-v2中创建多外壳应用程序

通过为每个模块使用一个引导程序,将来可以更容易地扩展它们之间的通信。您可能还需要在每个窗口上设置一个RegionManager更新,以正确注册每个Shell的每个Region,如示例中所述。

除了RegionManager之外,Prism提供的其他服务,如EventAggregatorModuleManager,都独立于应用程序的UI/Regions。因此,您应该能够在所有窗口中毫无问题地使用它们。

尽管如此,如果您要在单独的选项卡上加载每个Shell,您可以在主Shell应用程序上将TabRegion定义为TabControl,然后在TabRegion注册并加载每个内部Shell就像它们是简单的视图一样。在每个模块的Initialize()方法上注册视图将在初始化完成后加载每个View

有关管理模块区域的更多信息,您可能会发现以下MSDN Prism Guide章节非常有用:

  • 4:模块化应用程序开发
  • 7:编写用户界面

我希望这对你有帮助,

谨致问候。

相关内容

最新更新