[WPF/Silverlight]简单说下CLR Property与WPF Dependency Property的区别
总所周知,在.Net框架下要实现某些特定功能通常都会有n种不同的方式,使用“属性(Property)”就是其中之一。你既可以使用CLR Property也可以使用Dependency Property。
如果你对这两样东西尚不熟悉的话,就让我们先来简单的介绍一下它们。先来瞧瞧我们在.Net中最经常使用的CLR Property:
public string AuthorName { get; set; }
嗷嗷熟悉吧?
Dependency Properties是几年前在WPF中提出的概念,后来被顺延到Silverlight中(WPF/E嘛)。
public static readonly DependencyProperty AuthorNameProperty = DependencyProperty.Register("AuthorName", typeof(string), typeof(Page), new PropertyMetadata(""));
CLR Porperty明显更有通俗易懂,至少它比较好记。相比之下即使对于一个WPF或Silverlight老手来说,要学习声明一个DependencyProperty也要麻烦的多了。
不过抛开这个不说,DependencyProperty要比传统的CLR Property提供更多的功能,它可以为一段动画、数据关联、资源存储等设置属性。要了解更多,请看这篇文章。
我们可以通过在Blend中通过“生成属性”的功能观察这两种属性的不同从而对其进行一个大概的了解。比如生成一个CLR Property时:
如图,很多命令选项被灰显禁用,下面看看Dependency Property
如图,它不但保留了CLR Property的所有功能,而且还增加了转换成资源以及数据关联的支持,当然操作一段动画也不在话下。
起立,鼓掌,下回见!

作者:紫色永恒
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述