WPF 值绑定binding (中)----什么才能骄傲的成为绑定源

1 什么可以作为绑定源:

A .特定的属性  B.指定为集合   C .ObjectDataProvider D .XmlDataProvider    E 等


DependencyObject

在WPF中,软件开发人员所常接触的大部分类型都派生自DependencyObject,因此派生自DependencyObject的类型非常适合在UI层中作为绑定源。DependencyObject。该类默认提供了对绑定的支持。软件开发人员可以在该类型的派生类中使用DependencyProperty.Register()等众多函数实现可绑定属性。但由于并不是所有的WPF类型都派生自DependencyObject,而且DependencyObject上的所有属性并不全是DependencyProperty,因此在使用一个类型及属性之前,软件开发人员需要检查该类型是否派生自DependencyObject,而该属性是否在该类型中拥有相应的DependencyProperty。

  WPF只是一个UI 类库,而如果软件需要绑定使用非UI层的属性,那么从DependencyObject类派生并不是一个好的选择。正确的做法则是从INotifyPropertyChanged接口派生。实现了该接口后,类型实例可作为绑定源使用。

做法一: DependencyObject的继承

A.Register()等函数注册一个static readonly的DependencyProperty

B.GetValue()以及SetValue() 

做法二:实现INotifyPropertyChanged接口

A 声明PropertyChanged事件。绑定将侦听该事件并在事件发出后执行。

B  由于基类中的事件只能用来添加及删除侦听函数,因此软件开发人员需要提供一个派生类可访问的包装函数,以允许派生类发出PropertyChanged事件。该包装函数一般被命名为NotifyPropertyChanged(),并常常接受一个string类型的参数。

C 实现相应属性。在属性的访问符实现中,软件开发人员需要在属性的实际值发生更改后调用NotifyPropertyChanged()。


你可能感兴趣的:(.net,C#)