使用MVP动态添加不同视图

时间:2012-05-11 20:11:59

标签: c# model-view-controller mvp presenter

首先请允许我说这是我尝试尝试MVP的第一次尝试。我想采用Passive View方法,因为我想完全将模型与模型分离。

我通过阅读以下文章了解了MVP

德里克格里尔 http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/

托德·斯奈德(Todd Snyder) http://blogs.infragistics.com/blogs/todd_snyder/archive/2007/10/17/mvc-or-mvp-pattern-whats-the-difference.aspx

我的应用程序将有4个自定义控件视图,其中每个视图都实现了与Presenter交互的不同界面。现在这对于3个视图来说不是问题,因为控件是静态的并且永远不会改变。

我的问题出现在第4个视图的位置我需要根据从视图1触发的事件更改显示的控件/视图。

例如,假设View 1是一个可以来自员工或客户的人员列表。现在,根据所选人员的不同,您可以根据所选人员的类型修改不同的参数。问题是View 4需要根据选择的内容动态更改编辑控件。请记住,不仅属性不同,而且编辑方式也不同。此外,每个编辑控件都将触发不同的事件以进行属性更改。

那么我的Presenter如何知道如何管理与模型的交互,当取决于是否选择了员工或客户时,有一个不同的编辑器实现了不同的View界面?

我希望这很清楚。任何帮助是极大的赞赏。我已经搜遍了所有的例子,所有的例子都显示了View和Presenter之间的具体关系,而我的需要非常灵活。

我的目标是保持第4个视图上的编辑控件非常灵活,例如我可以为外星人或狗添加编辑控件/视图,或者我可能添加到View1中的任何其他选项。

由于

2 个答案:

答案 0 :(得分:0)

您可以创建一个顶级演示者,该演示者通过根据所选内容实例化不同的MVP三元组来侦听选择事件并更改编辑控件。通常在MVP中,演示者管理所有构造/依赖关系。

答案 1 :(得分:0)

我个人不喜欢拥有'Master Presenter'本身。我确实构建了复合演示者:例如视图可以包含多个视图中的一个,因此我为主视图构建了一个Presenter,它将命令(消息,事件等)发送给特定的子演示者(我不会在它拥有Presenter之外公开任何视图)。

不要过于复杂化......为每项责任使用不同的视图。意见很便宜。