Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中具有多个视图(或分层视图)的模型视图演示器#_C#_Mvp - Fatal编程技术网

C# c语言中具有多个视图(或分层视图)的模型视图演示器#

C# c语言中具有多个视图(或分层视图)的模型视图演示器#,c#,mvp,C#,Mvp,我在左面板中有一个拆分容器,它是一个带有按钮的用户控件。在右侧面板中是一个初始用户控件,该控件将根据按下的按钮进行更改。我想知道的是,如何让带有溢出面板的表单从按钮视图的演示者那里知道在视图x中绘制 从理论上讲,演示者应该可以访问视图,在这种情况下,演示者应该收到来自左面板视图的任何按钮单击的通知,然后更新表单以在右面板中显示视图 如何实现这一点在很大程度上取决于您的具体实现。架构模式是指导原则。。。没有必须遵循的硬性规则(除非您使用某种MVP库,在这种情况下,您将受到该库实现的约束) 编辑:要

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

从理论上讲,演示者应该可以访问视图,在这种情况下,演示者应该收到来自左面板视图的任何按钮单击的通知,然后更新表单以在右面板中显示视图

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

编辑:要回答下面的问题,请点击Chip

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


编辑2:(回应您更新的评论)没有硬性规定,但MVP实现的一个共同特点是演示者至少保留部分控制权。这意味着演示者必须具有对所有相关UI元素的某种访问权限。如果将视图嵌套在视图中,那么您仍然需要为演示者设计一种与视图交互的方式。

那么您的意思是,演示者与视图及其界面有一对多的关系?这是否意味着如果我有一个嵌套视图的视图可能有第三个嵌套视图,我必须通过构造函数传递一个引用?我猜您正在使用winforms。WinForms将在每一个转折点与您利用它的尝试进行斗争。我以前做过,但是很少会自然而然地发生,你必须做出一些妥协。如果可以的话,我建议您使用WPF,因为MVVM是自然的,并且易于支持。谢谢您的所有意见。我想我可能会尝试制作和“观察者”或“主演示者”来处理演示者之间的交流。整个模式对我来说很时髦,但我决心实现它