ControlBindingsCollection.Add Method (String, Object, String, Boolean, DataSourceUpdateMode, Object)
第二个参数是dataSource
类型object
。
从我的测试来看,这个dataSource
必须实现接口INotifyPropertyChanged
,否则绑定将无效。
我的问题是,为什么在该方法中,Object
而不是dataSource
需要INotifyPropertyChanged
?是否有其他方法可以在不继承INotifyPropertyChanged
的情况下进行绑定?
我搜索过互联网但无法找到相关信息。
答案 0 :(得分:1)
INotifyPropertyChanged
对于双向数据绑定是必要的。在使用单向数据绑定的情况下,该对象不需要实现INotifyPropertyChanged
:
单向数据绑定:控制更改将推送到数据源。
双向数据绑定:除单向外,数据源更改将推动控制。
以下是双向数据绑定的工作原理:
Binding
对象,订阅绑定属性的ValueChanged
的{{1}}事件。 PropertyDescriptor
检查容器对象是否为PropertyDescriptor
,然后订阅其INotifyPropertyChanged
以引发PropertyChanged
事件。这样,实现ValueChanged
将通知INotifyPropertyChanged
对象有关数据源属性值的更改。然后绑定会拉取数据并更新绑定的控件属性。