【发布时间】:2018-09-12 01:37:44
【问题描述】:
我有一个 Winform Model View Presenter (MVP) 应用程序,它在实例化时通过接口传入了一个 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 知道演示者。在此之前,我的 View 不需要知道 Presenter,因为它会引发 Presenter 订阅的事件,以便让 Presenter 知道发生了什么,并有机会告诉 View 要做什么在收到的事件通知。我无法找到一种简单的方法来允许 ProductPresenter 使用事件通知将其 ProductModel 属性数据绑定到 ProductView 文本框,而 View 没有对 ProductPresenter 的引用。
除了上面针对 WinForms MVP 描述的方法之外,还有其他方法可以实现与视图和关联模型的数据绑定,这种方法可以维护和支持。如果有人知道上述方法会产生任何问题,请发表评论。提前致谢。
【问题讨论】:
标签: c# winforms data-binding mvp