为什么ControlBindingsCollection.Add的数据源是一个对象而不是INotifyPropertyChanged?

时间:2018-02-13 02:43:52

标签: c# .net winforms data-binding

the method

ControlBindingsCollection.Add Method (String, Object, String, Boolean, DataSourceUpdateMode, Object)

第二个参数是dataSource类型object

从我的测试来看,这个dataSource必须实现接口INotifyPropertyChanged,否则绑定将无效。

我的问题是,为什么在该方法中,Object而不是dataSource需要INotifyPropertyChanged?是否有其他方法可以在不继承INotifyPropertyChanged的情况下进行绑定?

我搜索过互联网但无法找到相关信息。

1 个答案:

答案 0 :(得分:1)

INotifyPropertyChanged对于双向数据绑定是必要的。在使用单向数据绑定的情况下,该对象不需要实现INotifyPropertyChanged

  • 单向数据绑定:控制更改将推送到数据源。

  • 双向数据绑定:除单向外,数据源更改将推动控制。

以下是双向数据绑定的工作原理:

Binding对象,订阅绑定属性的ValueChanged的{​​{1}}事件。 PropertyDescriptor检查容器对象是否为PropertyDescriptor,然后订阅其INotifyPropertyChanged以引发PropertyChanged事件。这样,实现ValueChanged将通知INotifyPropertyChanged对象有关数据源属性值的更改。然后绑定会拉取数据并更新绑定的控件属性。