gpt4 book ai didi

c# - 为什么 ControlBindingsCollection.Add 的数据源是对象而不是 INotifyPropertyChanged?

转载 作者:行者123 更新时间:2023-11-30 23:05:29 25 4
gpt4 key购买 nike

关于 the method

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

第二个参数是dataSource,类型为object

根据我的测试,此 dataSource 必须实现接口(interface) INotifyPropertyChanged,否则绑定(bind)将无法工作。

我的问题是,为什么在那个方法中,它为 dataSource 接受一个 Object,而不是 INotifyPropertyChanged?有没有其他方法可以在不继承 INotifyPropertyChanged 的情况下进行绑定(bind)?

我在网上搜索过,但找不到任何相关信息。

最佳答案

INotifyPropertyChanged 是双向数据绑定(bind)所必需的。在使用单向数据绑定(bind)的情况下,对象不需要实现 INotifyPropertyChanged:

  • 单向数据绑定(bind):控件更改将推送到数据源。

  • 双向数据绑定(bind):除了单向之外,数据源更改将推送到控件。

双向数据绑定(bind)的工作原理如下:

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

关于c# - 为什么 ControlBindingsCollection.Add 的数据源是对象而不是 INotifyPropertyChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48758673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com