2011-01-14 50 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