每个模块的菜单项,模块内容使用 Prism 或 MEF 动态加载

Posted

技术标签:

【中文标题】每个模块的菜单项,模块内容使用 Prism 或 MEF 动态加载【英文标题】:Menu item for each module, with module content loading dynamically with Prism or MEF 【发布时间】:2011-06-08 00:26:11 【问题描述】:

我正在开发一个当前使用 Prism 和 MEF 的应用程序。

理想情况下,我希望为每个模块生成一个带有一个项目的工具栏或菜单,当单击一个项目时,只有在该模块中声明的视图才会加载到选项卡控件中。

例如:

菜单区域: ModuleA(已选) |模块B

标签区域: 模块AViewA |模块AViewB |模块AViewC

更改为 菜单区域: 员工 |库存(选定)

标签区域: 项目 |在Fi中

【问题讨论】:

【参考方案1】:

这里有很多类似的问题。通常,您将采用的方法是在您的模块可以引用的基础结构 DLL 中定义一个服务。您的模块将通过服务添加菜单/工具栏/功能区项目/任何对象。服务的实现位置取决于您——它可以在 Shell 项目、基础设施或单独的模块中。显然,如果它在一个单独的模块中,您必须确保您的其他模块将其定义为依赖项。

您可能需要查看以下内容:

这个有一个链接到一个演示动态菜单的项目: Looking for Prism example of Modules loading themselves into a menu

其中我问了一个关于如何构建动态菜单的问题: How to dynamically add MenuItems (with a header) to a WPF menu

更多.... Load Module Default Views In Region to Create Menu

还有更多! Menu service in Prism application CAL

您还可以找到更多。这是一个相当普遍的要求。我相信你可以从那里的代码示例中拼凑出一个很好的方法来做到这一点。

【讨论】:

感谢您为我指明正确的方向。我做了一些搜索,但没有找到任何简洁的内容。

以上是关于每个模块的菜单项,模块内容使用 Prism 或 MEF 动态加载的主要内容,如果未能解决你的问题,请参考以下文章

Prism for WPF再探(基于Prism事件的模块间通信)

wpf中如何把两个模块的内容放在一个类

Prism 框架基础架构 模块设计

仅在特定文章中显示 Joomla 模块?

Joomla 菜单项特定模块不工作

对于 PRISM 应用程序推荐哪种程度的模块化?