【问题标题】:Why ControlBindingsCollection.Add's datasource is an object and not INotifyPropertyChanged?为什么 ControlBindingsCollection.Add 的数据源是对象而不是 INotifyPropertyChanged?
【发布时间】:2018-02-13 02:43:51
【问题描述】:

开启the method

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

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

根据我的测试,这个dataSource 必须实现接口INotifyPropertyChanged,否则绑定将无法工作。

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

我已经搜索了互联网,但找不到任何相关信息。

【问题讨论】:

    标签: c# .net winforms data-binding


    【解决方案1】:

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

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

    • 双向数据绑定:除了单向之外,数据源的更改将推送到控制。

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 2010-10-29
      • 2011-10-06
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 2019-03-15
      相关资源
      最近更新 更多