[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的所有功能,而且还增加了转换成资源以及数据关联的支持,当然操作一段动画也不在话下。
起立,鼓掌,下回见!
作者:紫色永恒
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利