允许视图使用 Presenter 的模型 属性 在 MVP 中进行数据绑定

Allowing View To Use Presenter's Model Property For Databinding in MVP

我有一个 Winform Model View Presenter (MVP) 应用程序,它有一个在实例化时通过接口传入的 Presenter 对象。 Presenter (ProductPresenter) 有一个模型 (ProductModel) 属性。我允许视图 (ProductView) 访问 ProductPresenter 的 ProductModel 属性 以设置数据绑定。在 ProductView 下面使用其 ProductPresenter 实例访问其 ProductModel "City" 属性 以在加载事件期间设置到 ProductView 上名为 textBoxCity 的文本框控件的数据绑定:

        textBoxCity.DataBindings.Add(
    new Binding("Text", this.ProductPresenter.ProductModel, 
"City", false, DataSourceUpdateMode.OnPropertyChanged));

所有带有 INotifyPropertyChanged getter 和 setter 的设置都在 ProductPresenter 中使用其 ProductModel 属性.

定义

我唯一关心的是我必须让视图知道演示者。在此之前,我的 View 不需要知道 Presenter,因为它正在引发 Presenter 订阅的事件,以便让 Presenter 知道发生了什么,并让它有机会告诉 View 该怎么做在收到的事件通知上。我无法找到一种简单的方法来允许 ProductPresenter 使用事件通知将其 ProductModel 属性数据绑定到 ProductView 文本框,而 View 没有引用 ProductPresenter。

除了上面针对 WinForms MVP 描述的实用维护和支持方法之外,还有其他方法可以实现到视图和关联模型的数据绑定。如果有人知道上述方法会产生任何问题,请发表评论。提前致谢。

视图不应该知道模型或演示者。在演示者中处理数据绑定:

    View.textBoxCity.DataBindings.Add(
            new Binding("Text",ProductModel, 
            "City", false, DataSourceUpdateMode.OnPropertyChanged));