具有代理,事件和嵌套演示者的模型 - 视图 - 演示者

时间:2013-10-10 19:06:34

标签: c# winforms events delegates mvp

我有一组嵌套的视图如下:
enter image description here

每个视图都有一个Presenter,其中包含:

  • MainViewPresenter不了解观看情况或查看演示者ViewAViewB
  • ViewAViewB由各自的演示者单独管理,然后由SplitViewPresenter
  • 管理

我会在ViewA订阅的ViewAPresenter中发生事件。 SplitViewPresenter可以订阅儿童演示者的活动,然后将这些活动冒充到MainViewPresenter。但这似乎是一种可怕的浪费,只是为了点击ViewA点击按钮。

似乎应该有一种方法可以将某些事件监听器从MainViewPresenter耦合到ViewA.OnButtonClick

MainViewPresenter无法预知其他演示者显示内容的情况下,Observer / Observable模式似乎不合适。或者可能有使用Reactive的实现可以工作(注意:.Net 4.0)

代表是否可以走?我知道ViewA上的每个事件订阅可能需要一个不同的委托,这很好。在此特定实例中,按钮单击将包含需要执行的操作:

  • 使用新信息更新数据库
  • ViewA创建的新模型添加到MainView
  • 的树状视图中

1 个答案:

答案 0 :(得分:0)

我意识到MainView中的树视图有一个树节点的集合。此集合已经提升了CollectionChanged订阅的MainViewPresenter个事件。

ViewAPresenter引用了此集合,只是将保存的模型添加到集合中。反过来,通知MainViewPresenter并添加正确的节点。