我在Windows窗体应用中使用MVP模式。我需要更改视图上的单选按钮。我可以通过在视图上公开一个布尔属性来做到这一点,但是我应该使用事件来操纵视图吗?
答案 0 :(得分:5)
这是一个纯粹的问题,而不是务实......还有一点个人风格。无所谓......事件只是比普通方法更多的工作,但更多的解耦。 个人
但是你可以删除这个IView依赖(presenter引用了一个需要实例化和插入的IView)以及通过两种方式使用事件...但是我发现它的工作太多了。上述计划从未让我失望......但是。
答案 1 :(得分:2)
使用“简单语言”分析,我会说“无论是否显示单选按钮是视图的属性”,因此使用实际属性将其传递给View。
另一种(技术)可能性是在Presenter上有一个事件,即RadioButtonVisibilityChanged
,由View监听并通过EventArgs
传递新的可见性。这与视图独立且与演示者无知相反,因此破坏了MVP模式。我建议反对这样的废话。
答案 2 :(得分:1)
通常,控制器通过属性更改视图,并订阅视图引发的事件以了解更改。这是一个nice example of MVP,即使在Asp.NET中,Windows Forms的工作方式基本相同。