依赖属性

任何人都可以向我解释WPF中的依赖属性是什么以及它的用途。 我知道google上有很多关于它的教程,但是它们教会了如何创建依赖属性。 我很困惑我会在哪里使用它。 我的意思是我会在XAML中使用它吗? 如果有人能用简单的语言解释我,那就太好了。

如果一个简单的例子和​​XAML一起展示会很好,例如,我可以如何使用该属性,以及使用它后会产生什么效果。 非常感谢您的所有答案..

列出的许多链接应该可以让您了解依赖属性是什么,但一般来说,最简单的思考方式我认为如下:

如果您希望能够使用WPF的数据绑定绑定它们,则需要将依赖项属性用于用户界面元素的属性。 要成为数据绑定操作的“目标”,您需要使该属性成为依赖属性。

当您实现标准类(它成为“控件”的DataContext)时,您将需要使用INotifyPropertyChanged而不是DP。 这允许该类成为绑定“源”。

通常,如果您正在制作将在XAML中绑定的内容(如UIelement的Target ,您只需要创建依赖属性。 例如,假设我们有这样的XAML:

  

通常, ControlProperty将是一个Dep。 属性,因为它是绑定目标,并且SomeProperty将是实现INotifyPropertyChanged的类中的标准CLR属性(而不是DP)。

Dependency Property不会将其值存储在字段中,而是存储在某个哈希表中。 因此它需要更少的内存,这对于GUI对象尤其重要,因为大多数属性将保留其默认值,因此这些内存不会占用更多内存。 然而,依赖属性有点慢,因为来回装箱并在哈希表中查找。

Dependency Object框架还允许更改通知等许多function。我找到了一个很好的资源来解释这里的内部工作: http : //social.msdn.microsoft.com/Forums/en-US/wpf/thread/ c33a8359-58be-430D-b949-cb6e6f32d8aa

我同意声明它们的语法有点难看,但你可以创建助手来缓解这一点。

这可能是描述DP的最直接的文章:

http://joshsmithonwpf.wordpress.com/2007/06/22/overview-of-dependency-properties-in-wpf/

就个人而言,当我需要公开属性以便它们可以通过XAML进行数据绑定时,我经常使用它们。 例如,如果我创建一个我想在XAML中使用的UserControl,并且我想通过XAML在UserControl上设置一个属性,我将它作为依赖属性公开。

您正在寻找的是WPF Unleashed的第3章 。 这是一个免费的样本章节。

我看到它的最佳用途是将属性附加到您无法修改的类。 因此,如果您获得第三方程序集,则可以在课程中附加额外信息并在需要时阅读。