2011-01-14 68 views
0

我的任务是制作一个例如的MVP实施。 我想在我的视图(窗体)中有一个复选框 - 它的作用是切换窗体上某些字段的可见真/假。C#中MVP复选框的实现?

我是否需要为Presenter添加一些代码,以保持我的项目为MVP?

现在我得到了所有的在我的查看与该复选框事情

Form1.Designercs :

public void SetTelephoneVisible() 
    { 
     this.telephone.Visible = true; 
     this.label5.Visible = true; 
    } 
    public void SetTelephoneInvisible() 
    { 
     this.telephone.Visible = false; 
     this.label5.Visible = false; 
    } 


     this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); 

Form1.cs的 :

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked == true) 
      SetTelephoneVisible(); 
     if (checkBox1.Checked == false) 
      SetTelephoneInvisible(); 
    } 

因此,再次 - 我是否需要为Presenter添加一些代码,将我的项目保留为MVP? ...以及如何做到这一点?

PS:我可以给ü所有我的代码,如果需要澄清某事

回答

0

只要隐藏电话号码仍然是一个纯粹的UI,短暂的行动,我不会通知主持人。当用户打开组合框时,您不通知演示者吗?

但是,只要您开始向应用程序或业务逻辑添加应用程序或业务逻辑(例如,保存与字段可见性有关的用户首选项),情况就会不同。

0

在我看来模型视图演示是非常宽泛的术语,也有它的不同变种。但总的来说,每个UI模式的目的都是将逻辑与UI呈现分开。所以短“愚蠢”的答案是肯定的。但在我看来,这个话题更多的是哲学本质,放入演讲者的逻辑......例如,当用户滚动ListBox可见项目集合的变化时,是否应该通知演示者并维护可见项目列表?如果你不需要它,可能不会,但这是逻辑......如果你在演示者中移动所有形式的逻辑,你将最终重新创建控件。
如果它影响你的业务逻辑或模型,也许你应该。

+0

CheckBox并不影响Model。而且,说实话,我不知道它是否会影响Prezenter ......但似乎每一件事情都会影响Prezenter--对吗? ... btw - 即时通讯使用示例实现张贴在这里:http://blog.vuscode.com/malovicn/archive/2006/10/10/Model-View-Presenter-_2800_MVP_2900_-pattern.aspx(但分裂模型从Prezenter,并更改了数据结构) - 如何将复选框逻辑添加到Prezenter中? – dantuch 2011-01-14 14:41:48