在 WPF 中,有两种主要的属性类型可以用于数据绑定:依赖属性(Dependency Properties)和常规的 CLR 属性,后者通常与 INotifyPropertyChanged
接口结合使用。
依赖属性(Dependency Properties)
- 依赖属性是 WPF 框架中的一个特殊概念,它们是专为WPF UI元素设计的属性类型。依赖属性是为了优化性能、提供更丰富的功能、以及支持数据绑定和样式设置而设计的。
- 当您使用数据绑定将 UI 元素(例如
TextBox
、Button
等)的属性(如Text
、Visibility
等)绑定到数据源时,您实际上是在使用依赖属性。 - 依赖属性内置支持数据绑定,包括自动监听和响应源数据的变化。因此,当依赖属性所绑定的数据发生变化时,不需要您手动触发属性变更通知。
CLR 属性与 INotifyPropertyChanged
- 常规的 CLR 属性 是标准的.NET 属性,它们并不自动支持数据绑定的变更通知。为了使这些属性在数据绑定中能够更新UI,您需要实现
INotifyPropertyChanged
接口。 - 当一个实现了
INotifyPropertyChanged
接口的属性值发生变化时,需要手动触发一个事件(PropertyChanged
事件),告知UI进行更新。这是通过在属性的set
访问器中调用OnPropertyChanged
方法来实现的。
总结
- 如果您在自定义的控件或UI元素中创建新的属性,并希望它们能够支持数据绑定和自动更新,那么您应该创建依赖属性。
- 对于在后台代码(如ViewModel)中使用的普通属性,您通常需要实现
INotifyPropertyChanged
接口,以便在属性值更改时通知UI。