我正在学习当前项目(
Windows应用程序)的MVP模式.
我在MVVM中使用它在Silverlight和WPF中有很好的工作经验.
在MVVM中,我的视图和ViewModel用于处于单独的项目中,并使用它们用于彼此通信的WPF的强绑定.
但是在MVP中,我在Internet上看到的大多数示例都是View和演示者在同一个项目中.
所以我的问题是: –
有什么方法可以在不同的项目中创建View和Presenter吗?我的意思是View as Windows Application和Presenter as Class Library项目.
如果是,则我的View和Presenter如何相互引用.
最佳答案 您的演示者只能通过界面与视图进行通信.
您的演示者和视图界面可以包含在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...
}
}