2014-10-08 18 views
0

我正在使用MVC模式處理WinForms應用程序。我應該從控制器訪問UI組件,例如樹視圖節點嗎?控制器應該訪問UI組件嗎?

我想訪問一個treeview選定的節點,並改變它的標籤和類似的東西,我應該從控制器訪問它還是違反MVC的原則?

唯一讓我感到惱火的是treenode屬於Windows.Forms命名空間,從MVC角度來看,視圖/表單相關組件只能在視圖中使用,所以這就是我要問的原因。

回答

1

通過調用視圖不直接訪問控制器的UI組件。想象一下,如果將樹視圖改爲別的東西,稍後再說一個基於Telerik的樹視圖,當這種情況發生時,控制器是否也必須更改其代碼?然而,對於winforms,我相信MVP將適用於我所做的評論以及Stijn所說的內容。也許看看兩者之間的區別。

MVC vs MVP

2

不,您不應該控制控制器中視圖的行爲。您應該將數據傳遞給視圖,並且視圖應根據收到的數據決定是否適應。

如果您想對視圖中發生的事情做出反應,例如更改選定的樹節點,則應該將數據發送回控制器。控制器然後可以用您的視圖可以顯示的附加數據進行響應。

+0

和什麼有關獲取選擇喜歡的文字/名稱等節點從樹視圖的數據...它也是對MVC規則??? – 2014-10-08 11:19:23

+0

視圖應該將數據發送回控制器。例如,當更改選定的treenode時,您可能想要向控制器發送選擇哪個節點,並且控制器可能會將其他數據發送回您的視圖,然後您的視圖可以選擇顯示。 – Stijn 2014-10-08 11:21:22

+0

讓我清楚,我已經綁定樹控事件的樹視圖事件,當樹視圖上的任何事件觸發器控制器必須知道有關該樹節點的選定節點和數據,所以我必須訪問選定節點的信息,如節點名稱/文本等進一步商業邏輯 – 2014-10-08 11:24:46