Prism模块应该如何了解彼此的观点?
How should Prism modules know about each other's views?
我对 Prism 中的模块还很陌生,很难理解如何正确使用它们。我想要一个如下图所示的导航面板,这是我从 Google 那里偷来的。
假设我有 3 个模块用于 3 个不同的关注点:NavigationModule
、HelpModule
和 FeedbackModule
。如果我想在应用首次加载时显示 "Help",我的理解是我会执行以下操作:
- 在我的 Shell(主要 WPF 项目)
中定义导航和内容区域
- 执行后,将导航视图加载到导航区域
- 初始化
NavigationModule
后,将视图从 HelpModule
加载到主要内容区域
关于哪些模块应该相互了解,这给我留下了几个问题:
- Shell 的项目是否应该引用
NavigationModule
以加载其视图?
NavigationModule
是否应该引用 HelpModule
以加载其视图?以及对 FeedbackModule
的引用以便按需加载其视图?
如果这些问题的答案是 "no," 那么模块了解彼此观点的最佳方式是什么?我可以创建一个带有视图名称常量的共享 class 库,但是以这种方式维护一堆字符串似乎有点麻烦,而对于引用我可以使用 nameof()
。我将不胜感激任何方向。谢谢。
从一个模块到另一个模块的项目引用的意义上来说,模块不应该彼此 "know",因为这会破坏从一开始就拥有模块所获得的任何东西,也就是说,拥有一个模块化 应用程序(由可以相互独立换出的组件构建)。
模块应通过共享接口进行交互,共享接口定义在模块外部,即在框架中或在 "are" 本身没有模块的程序集中。根据您的要求,您应该预先定义(并在构建过程中强制执行)有哪些模块以及哪些接口程序集以及允许哪个模块引用哪个接口程序集。
那么如何在应用程序加载时显示帮助视图呢?在加载 初始视图 (无论是什么)时发送消息(例如通过 IEventAggregator
或任何其他通信机制)。帮助模块侦听消息并导航到帮助视图。重要提示:SessionResume 模块也可能会监听我们的消息。选择部署哪些模块的人有责任只部署相互兼容的模块。
我对 Prism 中的模块还很陌生,很难理解如何正确使用它们。我想要一个如下图所示的导航面板,这是我从 Google 那里偷来的。
假设我有 3 个模块用于 3 个不同的关注点:NavigationModule
、HelpModule
和 FeedbackModule
。如果我想在应用首次加载时显示 "Help",我的理解是我会执行以下操作:
- 在我的 Shell(主要 WPF 项目) 中定义导航和内容区域
- 执行后,将导航视图加载到导航区域
- 初始化
NavigationModule
后,将视图从HelpModule
加载到主要内容区域
关于哪些模块应该相互了解,这给我留下了几个问题:
- Shell 的项目是否应该引用
NavigationModule
以加载其视图? NavigationModule
是否应该引用HelpModule
以加载其视图?以及对FeedbackModule
的引用以便按需加载其视图?
如果这些问题的答案是 "no," 那么模块了解彼此观点的最佳方式是什么?我可以创建一个带有视图名称常量的共享 class 库,但是以这种方式维护一堆字符串似乎有点麻烦,而对于引用我可以使用 nameof()
。我将不胜感激任何方向。谢谢。
从一个模块到另一个模块的项目引用的意义上来说,模块不应该彼此 "know",因为这会破坏从一开始就拥有模块所获得的任何东西,也就是说,拥有一个模块化 应用程序(由可以相互独立换出的组件构建)。
模块应通过共享接口进行交互,共享接口定义在模块外部,即在框架中或在 "are" 本身没有模块的程序集中。根据您的要求,您应该预先定义(并在构建过程中强制执行)有哪些模块以及哪些接口程序集以及允许哪个模块引用哪个接口程序集。
那么如何在应用程序加载时显示帮助视图呢?在加载 初始视图 (无论是什么)时发送消息(例如通过 IEventAggregator
或任何其他通信机制)。帮助模块侦听消息并导航到帮助视图。重要提示:SessionResume 模块也可能会监听我们的消息。选择部署哪些模块的人有责任只部署相互兼容的模块。