0

我有一个 Silverlight Prism 应用程序,其中包含一个带有登录控件的工具栏模块。我目前在 Bootstrapper 的主区域中有一个模块设置为InitializationMode.OnDemand ,并且可以在工具栏模块成功登录后通过ModuleManager.LoadModule()加载它。但是,这感觉不对,因为它本质上将工具栏模块与登录后加载的模块紧密耦合。

现在的问题...这是最佳实践,还是我应该从工具栏模块引发CompositePresentationEvent并让外壳加载适当的模块?或者还有其他选择吗?我正在构建此应用程序以尝试了解有关 Prism 的更多信息,并且我想确保我尽可能地遵循最佳实践。

4

1 回答 1

1

在这种情况下,我更喜欢 EventAggregator 方法。我不喜欢一个模块知道另一个模块。至多,Shell 应该知道其他模块,但它们不应该那样串扰。

由于这更多是 shell 的责任,您是否考虑过将其烘焙到 shell 本身中?如果它们在逻辑上相同,则没有太多理由将它们分开,除非您打算经常更换工具栏。我通常将菜单烘焙到外壳中,并为模块提供一种方式,通过 IMenuRegistry 之类的服务或类似的服务为菜单做出贡献。只是一个建议。

于 2009-12-02T18:06:32.853 回答