2012-06-06 48 views
0

我在模块化的Silverlight应用程序中偶然发现了这个特定的场景。在这种情况下使用什么:服务或EventAggregator

我需要从一个应用程序屏幕填充上下文菜单,问题是多个模块可能要在此处添加菜单条目。

的2解决方案,我们已经想出是:

  • 使用事件聚合和发布ContextMenuLoadEvent,模块监听该事件并在上下文菜单中添加菜单项
  • 使用IOC容器并从模块注册IPopulateContextMenu服务,然后在屏幕上获取所有IPopulateContextMenu服务并调用它们的Populate。

您认为最好的方法是什么?为什么?

感谢,

回答

2

我觉得第二种方法更接近它应该做的方式。您不希望应用程序shell通知模块存在上下文菜单。如果您想重新想象UI并使用其他控件,该怎么办?您将不得不更改消息类型以及订阅该消息的所有模块。

取而代之,使用MEF例如,您可以有一个IContextOptions接口或类似的方法来检索上下文选项的集合。在MEF发现每个实现此接口的模块之后,您可以依次调用该方法来填充上下文菜单。

相关问题