2012-03-26 53 views
1

我們在這裏使用了MVP設計模式,並且我們使用了每個UserControl風格的演示者。如何在使用WinForms和MVP時添加控件?

This answer表明兩種不同風格的主持人建設:

  1. 每個演示實例,它有任何兒童節目主持人。
  2. 控制器類實例化所有演示者並處理它們之間的通信。

不幸的是,沒有提到視圖的連接方式和位置。在另一個項目中,我使用工廠模式創建演示者並使用dependency injection傳遞他們的意見。視圖是在視圖工廠中創建的,該視圖工廠使用適當的用戶控件實例化視圖,然後用Controls.Add將其添加到表單中。

從我從第一個鏈接收集的內容中,Visual Studio設計器用於添加UserControls - 這很好,但似乎演示者會不必要地耦合到視圖層。

那麼我應該如何添加我的子視圖並連接View-Presenter對呢?

回答

0

我傾向於這樣做的方式是在子視圖的「主」視圖中放置佔位符,我通常使用面板控件。

我總是連線我的MVP,以便演示者創建視圖。從來沒有相反的方式(我討厭那種風格)然後主持人公開一個GetView()方法返回視圖。

主演講人然後可以創建一個子演示者獲取其視圖並告訴主視圖來呈現它。這是通過masterview上的一個方法完成的,該方法將子視圖添加到面板控件的控件集合中。

+0

這是(或多或少)我使用的確切方法,雖然有一個屬性。不幸的是,對於我們來說,我們編寫的環境*需要一個WinForms項目作爲啓動表單的啓動項目,因此至少有一個表單必須啓動該過程。當試圖分離類時,它會變得更加棘手。 – 2012-03-27 12:22:15

+0

你可以給出一個演示者如何創建視圖的示例代碼。我始終認爲View必須創建Presenter,因爲該頁面是第一個訪問點。謝謝。 – happygilmore 2013-03-15 14:58:56

相關問題