2012-04-25 130 views
0

我在嘗試理解這種模式時遇到了很多麻煩。 在工作中,我們正在實施被動視圖的MVP。我們正在使用WinForms。視圖之間的溝通

  • 因此,我們有一個視圖(這是一個窗體),它實現了一個接口並有一個演示者。
  • 演示者獲取視圖 實現的界面實例,並管理視圖拋出界面。
  • 演示者可以看到模型和經理。
  • 該管理器處理多個模型的數據庫持久性,但不會手動添加它們,它使用一個單獨的圖層,稱爲數據,因此它告訴該圖層保留數據
  • 數據層然後將數據持久存儲到數據庫,使用實體框架

假設我們有客戶視圖,它反映了模型客戶,我們的數據庫中有一個名爲客戶的表。 客戶可以有名字和城市。

我們也有一個城市的視圖,這是一個簡單的添加,編輯和刪除,它也代表一個模型城市,和一個表城市。

現在我們的客戶來看,我們希望讓用戶添加一個新的城市,所以在視圖中,我們打開另一種觀點認爲,城市查看,用戶然後創建一個新的城市。

從客戶端視圖中,我想查看用戶添加的城市,這可能怎麼樣?該視圖會返回什麼?

(我想擁有它的內存,增加城市的時候不堅持什麼數據庫,我只是想在城市的模型)

我想返回一個模型和觀察模型從視圖中不MVP。那我該怎麼做呢?

+0

我假設您的ViewModel觸發適當的事件來更新UI的數據更改時? – Tejs 2012-04-25 17:23:49

+0

ViewModel是什麼意思? – gosukiwi 2012-04-25 17:29:01

+0

聽起來像你的界面是ViewModel。當你在界面上設置一些東西時,界面會更新,是嗎? – Tejs 2012-04-25 17:29:41

回答

0

打開另一個視圖是完全合理的,但我個人不贊成視圖返回一個值供調用者使用。如果其他觀點需要訪問這個新城市呢?

見我的答案在這裏:MVP Communication between presenters?使用的pub/sub,以實現自己的目標的一個例子。