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
,并添加适当的节点