使用INotifyPropertyChanged(.Net)进行数据绑定

时间:2009-08-14 13:11:00

标签: data-binding mvp inotifypropertychanged

我正在尝试找到一种在经典Winforms中实现MVP的好方法,以及我来到accros的几个解决方案(例如http://codebetter.com/blogs/jeremy.miller/archive/2007/05/25/build-you-own-cab-part-3-the-supervising-controller-pattern.aspx)谈论在模型和视图之间使用数据绑定。我之前从未使用过数据绑定,所以我想我会尝试一下。

麻烦的是,我无法找到如何使用INotifyPropertyChanged进行简单绑定(例如我的模型类中的字符串到表单上的文本框),如上文所述。我以为我已经解决了(这是形式,'model'是我的模型类的一个实例):

txtModelName.DataBindings.Add(new Binding("Text", model, "Name"));

但是,我很快意识到这根本没有使用INotifyPropertyChanged - 无论我是否在我的模型上实现该接口,它都能正常工作。本身不是问题,但它不能按照我想要的方式工作,主要问题是它是双向绑定(我只想将对象绑定到< / b>表格)。

我假设使用INotifyPropertyChanged有一种不同的绑定方式,或者如上所述完成的绑定可以设置为仅在一个方向上工作 - 任何人都可以在这里帮忙,还是指向一个体面的例子?

我使用的是经典winforms的.Net 3.5,而不是WPF。

由于

1 个答案:

答案 0 :(得分:1)

事实证明,上面的情况有点像红鲱鱼。发生的事情是我从文本框绑定到模型,从模型绑定到另一个文本框。如果我直接更新了模型,那么在没有实现INotifyPropertyChanged的情况下它将无法工作。

对于双向绑定,我认为如果你使用这种方法,你必须忍受它。如果您不想这样做,只需咬紧牙关并使用MVP的“被动视图”风格。