2012-06-06 46 views
0

我在模塊化的Silverlight應用程序中偶然發現了這個特定的場景。在這種情況下使用什麼:服務或EventAggregator

我需要從一個應用程序屏幕填充上下文菜單,問題是多個模塊可能要在此處添加菜單條目。

的2解決方案,我們已經想出是:

  • 使用事件聚合和發佈ContextMenuLoadEvent,模塊監聽該事件並在上下文菜單中添加菜單項
  • 使用IOC容器並從模塊註冊IPopulateContextMenu服務,然後在屏幕上獲取所有IPopulateContextMenu服務並調用它們的Populate。

您認爲最好的方法是什麼?爲什麼?

感謝,

回答

2

我覺得第二種方法更接近它應該做的方式。您不希望應用程序shell通知模塊存在上下文菜單。如果您想重新想象UI並使用其他控件,該怎麼辦?您將不得不更改消息類型以及訂閱該消息的所有模塊。

取而代之,使用MEF例如,您可以有一個IContextOptions接口或類似的方法來檢索上下文選項的集合。在MEF發現每個實現此接口的模塊之後,您可以依次調用該方法來填充上下文菜單。

相關問題