[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的所有功能,而且还增加了转换成资源以及数据关联的支持,当然操作一段动画也不在话下。

 

起立,鼓掌,下回见!

posted @ 2009-02-20 22:42  紫色永恒  阅读(978)  评论(7编辑  收藏  举报