2009-06-15 75 views
1

我在研究模型視圖演示者模式。到目前爲止,我喜歡我所看到的內容,然而幾乎所有的文章,網絡廣播,播客等我見過,閱讀或聽說過傾向於處理從文本框中設置和檢索簡單類型,並且我很難理解如何處理與更復雜的UI控件。模型視圖演示者 - 處理更復雜的UI控件

例如,假設我有一個CheckedListBox。在這個CLB中,我想顯示給定實例選擇的所有可用選項和選項(想象一個帶有FavouriteIceCreamFlavours列表的Friend類)。我可以很容易地填寫列表框,但是我怎樣才能設置選擇哪個(例如在隨後編輯這位朋友時)。另外,我會如何將這些變化持久化回基礎的Friend對象?

另一個候選人將是一個TreeView。假設通過右鍵單擊電視節點,我希望用戶能夠刪除該節點 - 將該操作傳回給Presenter的最佳方法是什麼?

乾杯,

Lenny。

(PS我在C#3.5/WinForms的環境中開發)

+0

只是爲了澄清,您是指展示模型意義上的演示者還是被動/監督演示者? – micahtan 2009-06-15 19:40:30

回答

0

我只是新來這個MVP的事情爲好。但我會去做我會做的事情。我所做的與樹視圖只是處理視圖內的刪除,因爲它只是UI事件,但如果你是某種數據庫邏輯或什麼的,那麼你可以做到這一點。

我會:

Presenter的界面:

Interface IPresenter 
{ 
    bool DeleteItem(string itemName); 
} 

視圖類:

class View : IView 
{ 
    IPresenter presenter = new Presenter(this); 

    void DeleteButtonClick(//SomeEventArgs) 
    { 
     bool vaild = this.presentor.DeleteItem(//Get the selected item); 
     if (vaild) 
     { //Delete the item from the tree view } 
    } 
} 

主講類:

class Presenter : IPresenter 
{ 
    public bool DeleteItem(string itemName) 
    { 
     // Check for valid delete. 
     return true or false 
    } 
} 

希望這應該工作。

相關問題