模型视图Presenter在c#中有多个视图(或分层视图)

时间:2012-06-20 19:45:11

标签: c# mvp

左侧面板中有一个拆分容器,是一个带按钮的用户控件。在右侧面板中是一个初始用户控件,它将根据按下的按钮进行更改。我想知道的是如何让具有溢出面板的Form知道在按钮视图的演示者的视图x中绘制?

1 个答案:

答案 0 :(得分:8)

理论上,Presenter应该可以访问Views,在这种情况下,应该通过左侧面板中的视图通知Presenter任何按钮点击,然后更新Form以在右侧面板中显示视图。

如何实现这一点在很大程度上取决于您的具体实施。架构模式是指导方针......没有必须遵循的硬性和快速规则(除非您使用某种类型的MVP库,在这种情况下,您将受到该库实现的约束)。

编辑:回答下面的问题,筹码......

同样,这完全取决于您的实施。在某些情况下,拥有一个庞大的Presenter和几十个视图可能是有意义的。在其他情况下,为每个视图设置一个演示者可能是有意义的。但是,即使您有多个演示者,您仍然需要维护层次结构,以便演示者可以相互交谈。所以某个地方,在某种程度上,演示者将会知道按钮点击和空容器等待填充,即使这些知识是通过另一个演示者间接来的。

编辑2 :(响应您的更新评论)没有严格的规则,但MVP实施中的一个共同特征是Presenter至少保留部分控制权。这意味着Presenter必须具有对所有相关UI元素的某种级别的访问权限。如果您在视图中嵌套视图,那么您仍然需要为Presenter设置一种与它们交互的方式。