2010-05-10 39 views
0

在相關視圖之間共享數據的良好模式是什麼?視圖之間共享數據的模式(MVP或MVVM)

我有一個應用程序,其中1個窗體包含許多小視圖,每個視圖或多或少相互獨立(它們通過事件總線進行通信/交互)。每隔一段時間我需要將相同的對象傳遞給子視圖。有時我需要將同一個對象傳遞給子視圖,然後將子對象傳遞給另一個子對象本身。

什麼是在父窗體(視圖)中包含的所有視圖之間共享此數據的好方法?

我已經看過CAB和他們的方法,並且每個「視圖」都有一個「根工作項目」,這個工作項目包含包含視圖之間共享「狀態」的字典。

這是最好的方法嗎?只是一個共享字典根視圖下的所有視圖都可以訪問?

我現在的方法是在視圖上有一個函數,允許爲該視圖設置對象。像

view.SetCustomer(Customer c); 

東西那麼如果視圖包含子視圖它知道來設置它的子視圖ALA:

this.childview1.SetCustomer(c); 

的應用程序是用C#3.5,使用MVP與結構圖的WinForms作爲IoC/DI提供商。

回答

0

好像共享數據應該在底層模型,而不是查看歸屬。至於這種共享是如何發生的,我會假設某些東西正在創建個體視圖,並且給他們提供了他們的模型的參考?這似乎是共享使用的適當機制。

+0

你是對的,我開始用更多的DTO來批准用戶界面數據,而不是直接嘗試使用模型,這有助於打破共享實例的需要。 – Dovix 2010-06-18 23:40:57

+0

DTO的普及似乎正在解決大量的問題。有趣的是,經過多年的OO正統觀念,我們開始意識到嘿,畢竟這些'結構'事物有一些價值!更多的東西改變... – kyoryu 2010-06-19 18:23:44

+0

是的。 DTO是一種很好的工具,可以讓您直接將它發佈到UI中,而不會出現額外的膨脹。太糟糕了,就像所有其他模式/方法一樣,人們只是濫用它們直到成爲問題。 Skillz走了很長一段路:) – Dovix 2010-06-19 23:48:33