依赖属性(Dependency Properties)和常规的 CLR 属性

在 WPF 中,有两种主要的属性类型可以用于数据绑定:依赖属性(Dependency Properties)和常规的 CLR 属性,后者通常与 INotifyPropertyChanged 接口结合使用。

依赖属性(Dependency Properties)

  • 依赖属性是 WPF 框架中的一个特殊概念,它们是专为WPF UI元素设计的属性类型。依赖属性是为了优化性能、提供更丰富的功能、以及支持数据绑定和样式设置而设计的。
  • 当您使用数据绑定将 UI 元素(例如 TextBoxButton 等)的属性(如 TextVisibility 等)绑定到数据源时,您实际上是在使用依赖属性。
  • 依赖属性内置支持数据绑定,包括自动监听和响应源数据的变化。因此,当依赖属性所绑定的数据发生变化时,不需要您手动触发属性变更通知。

CLR 属性与 INotifyPropertyChanged

  • 常规的 CLR 属性 是标准的.NET 属性,它们并不自动支持数据绑定的变更通知。为了使这些属性在数据绑定中能够更新UI,您需要实现 INotifyPropertyChanged 接口。
  • 当一个实现了 INotifyPropertyChanged 接口的属性值发生变化时,需要手动触发一个事件(PropertyChanged 事件),告知UI进行更新。这是通过在属性的 set 访问器中调用 OnPropertyChanged 方法来实现的。

总结

  • 如果您在自定义的控件或UI元素中创建新的属性,并希望它们能够支持数据绑定和自动更新,那么您应该创建依赖属性。
  • 对于在后台代码(如ViewModel)中使用的普通属性,您通常需要实现 INotifyPropertyChanged 接口,以便在属性值更改时通知UI。
相关推荐
Vae_Mars6 小时前
C#中的delegate委托
开发语言·c#
公子小六10 小时前
基于.NET的Windows窗体编程之WinForms音频控件
windows·microsoft·c#·.net·音视频·winforms
绿浪198411 小时前
c# 结构体 能不能直接封送检测
开发语言·c#
新手unity自用笔记11 小时前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
李高钢12 小时前
【WPF】MVVM 与数据绑定实战:从原理到完整项目
wpf
格林威13 小时前
C#图像像素放大:邻域平均、双线性插值实现像素放大的C#实现代码
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
用户2986985301417 小时前
C# 实现 PowerPoint 多格式转换:图片、PDF 与 SVG 实战
c#·.net·svg
李高钢18 小时前
【WPF】从 Avalon 到 .NET 10:WPF 平台演进史与特性全览
.net·wpf
格林威19 小时前
C#图像处理:使用imagemagick实现像素放大水印转换等多种功能
android·开发语言·图像处理·人工智能·计算机视觉·c#·视觉检测
胖纸不争1 天前
Clasp:一个带插件系统的 .NET 10 命令行工具箱
c#·net core