我有一个Winform Model View Presenter(MVP)应用程序,它在实例化时通过接口传入Presenter对象。 Presenter(ProductPresenter)具有模型(ProductModel)属性。我允许View(ProductView)访问ProductPresenter的ProductModel属性来设置数据绑定。 ProductView下方使用其ProductPresenter实例访问其ProductModel" City"在load事件期间在ProductView上设置数据绑定到文本框控件的属性:
textBoxCity.DataBindings.Add(
new Binding("Text", this.ProductPresenter.ProductModel,
"City", false, DataSourceUpdateMode.OnPropertyChanged));
所有带有INotifyPropertyChanged的getter和setter的设置都是使用ProductModel属性在ProductPresenter中定义的。
我唯一担心的是我必须让View了解演示者。在此之前,我的View不需要知道Presenter,因为它引发了Presenter订阅的事件,以便让Presenter知道发生了什么并让它有机会告诉View基于什么做收到的事件通知。我无法找到一种简单的方法来允许ProductPresenter使用事件通知将ProductModel属性数据绑定到ProductView文本框,而View没有引用ProductPresenter。
是否有另一种方法可以实现对View和相关模型的数据绑定,而不是上面针对WinForms MVP所描述的维护和支持实用的内容。如果有人知道任何问题,上述方法将创建请评论。提前致谢。
答案 0 :(得分:1)
视图不应该知道模型或演示者。处理演示者中的数据绑定:
View.textBoxCity.DataBindings.Add(
new Binding("Text",ProductModel,
"City", false, DataSourceUpdateMode.OnPropertyChanged));