2015-06-19 85 views
4

我正在學習當前項目(Windows應用程序)的MVP模式。 我在使用Silverlight和WPF的MVVM中有很好的工作經驗。 在MVVM中,我的視圖和ViewModel用於單獨的項目中,並使用它們用來相互通信的WPF的強大綁定。 但在MVP中,我在互聯網上看到的大部分示例都是View和Presenter在同一個項目中。我可以在MVP模式的不同項目中創建視圖和演示者

所以我的問題是: - 有沒有什麼辦法可以在不同的項目中創建View和Presenter?我的意思是以Windows Application和Presenter作爲類庫項目查看。

如果是,那麼我的View和Presenter如何互相引用。

回答

2

您的演示者只能通過接口與視圖進行通信。

您的演示者和視圖界面可以包含在Windows應用程序可以引用的類庫項目中。您在Windows應用程序項目中創建的任何具體視圖都可以實現適當的視圖界面。

下面的簡單示例顯示了類可能如何交互。

ClassLibrary.dll

public class Presenter { 

    // Repository class used to retrieve data 
    private IRepository<Item> repository = ...; 

    public void View { get; set; } 

    public void LoadData() { 
     // Retrieve your data from a repository or service 
     IEnumerable<Item> items = repository.find(...); 
     this.View.DisplayItems(items); 
    } 
} 

public interface IView { 
    void DisplayItems(IEnumerable<Item> items); 
} 

WindowsApplication.dll

public class ConcreteView : IView { 

    private Button btn 
    private Grid grid; 
    private Presenter presenter = new Presenter();   

    public ConcreteView() { 
     presenter.View = this; 
     btn.Click += (s, a) => presenter.LoadData(); 
    } 

    public void DisplayItems(IEnumerable<Item> items) { 
     // enumerate the items and add them to your grid... 
    } 
} 
+0

#Benjamin大風感謝解釋,但我很新格局。你能否給我提供任何例子,比如如何使用MVP模式點擊加載按鈕時將數據加載到網格中。 –

+0

#本傑明大風謝謝它幫助了我。 –

相關問題