C# 具有代理、事件和嵌套演示者的模型视图演示者

C# 具有代理、事件和嵌套演示者的模型视图演示者,c#,winforms,events,delegates,mvp,C#,Winforms,Events,Delegates,Mvp,我有一组嵌套视图,如下所示: 每个视图都有一个演示者,其中: MainViewPresenter不知道视图或视图演示者ViewA或ViewB ViewA和ViewB分别由各自的演示者管理,然后由SplitViewPresenter 我有将在ViewA中发生的事件,ViewAPresenter将订阅这些事件。SplitViewPresenter可以订阅子presenter的事件,然后将这些事件添加到MainViewPresenter。但是,仅仅从ViewA中弹出一个按钮点击,这似乎是一种可怕

我有一组嵌套视图,如下所示:

每个视图都有一个演示者,其中:

  • MainViewPresenter
    不知道视图或视图演示者
    ViewA
    ViewB
  • ViewA
    ViewB
    分别由各自的演示者管理,然后由
    SplitViewPresenter
我有将在
ViewA
中发生的事件,
ViewAPresenter
将订阅这些事件。
SplitViewPresenter
可以订阅子presenter的事件,然后将这些事件添加到
MainViewPresenter
。但是,仅仅从
ViewA
中弹出一个按钮点击,这似乎是一种可怕的浪费

似乎应该有一种方法将一些事件侦听器从
MainViewPresenter
耦合到
ViewA.onbutton单击

在这种情况下,
MainViewPresenter
无法预知其他演示者显示的内容,因此观察者/可观察模式似乎不合适。或者可能有一个使用反应式的实现可以工作(注意:.Net 4.0)

委派代表是正确的做法吗?我知道
ViewA
上的每个事件订阅可能需要不同的委托,这很好。在此特定情况下,单击按钮将有需要执行的操作:

  • 用新信息更新数据库
  • 将由
    ViewA
    创建的新模型添加到
    MainView

我意识到,
MainView
中的树视图具有树节点的集合。此集合已引发
MainViewPresenter
订阅的
CollectionChanged
事件

ViewAPresenter
引用了此集合,只需将保存的模型添加到集合中即可。依次通知
MainViewPresenter
,并添加适当的节点