2010-04-02 225 views
7

任何人都可以解释我在WPF中的依赖属性是什么,它的用途是什么。我知道谷歌有很多关于它的教程,但他们教导如何创建一个依赖项属性。我很困惑,我会在哪里使用它。我的意思是我会在XAML中使用它吗?如果有人能够用简单的语言来解释我,那会很棒。依赖属性

如果一个简单的例子与XAML一起显示,举例说明如何使用该属性,以及在使用该属性后效果如何,那将会很好。 非常感谢您的答复。

+0

部分重复:http://stackoverflow.com/questions/2505234/need-a-short-and-clear-definition-for-dependency-properties – itowlson 2010-04-02 19:42:57

回答

13

列出的许多链接应该给你一个什么样依赖属性是一个好主意,但在一般情况下,最简单的方法去思考他们,我相信是这样的:

依赖属性,你需要使用什么用户界面元素的属性,如果你想能够使用WPF的数据绑定来绑定它们。为了成为数据绑定操作的“目标”,您需要将该属性设置为依赖项属性。

当你实现一个标准类(它成为一个“控件”的DataContext)时,你会想要使用INotifyPropertyChanged而不是DP。这允许该类成为具有约束力的“源”。

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

<local:MyControl ControlProperty="{Binding SomeProperty}" /> 

通常情况下,ControlProperty将是德普。属性,因为它是绑定目标,而SomeProperty将是一个标准的CLR属性(不是DP),所以在实现INotifyPropertyChanged的类中。

+0

那么它会是什么样子,当姓氏从test1更改为test2时,将字体从绿色更改为黄色?只是一个例子.. – developer 2010-04-02 19:35:22

+0

那么 - 即使只是姓名显示。以“TextBlock”控件 - “Text”属性为依赖属性,这就是为什么你可以这样做: 2010-04-02 19:37:31

+0

@developer:LastName可以是一个类的普通属性,但文本必须是DependencyProperty才能成为绑定的“目标” - 即:您在XAML中绑定的东西。 – 2010-04-02 19:38:06

0

我看到它的最佳用途是将属性附加到不能修改的类。所以,如果你得到第三方组件,你可以附加额外的信息到课堂上,并在需要时阅读。

+0

这是附加属性,它只是依赖项属性的一种形式,通常被认为是分开的。 – 2010-04-02 19:20:59

1

您要寻找的是WPF Unleashed的chapter 3。这是一个免费的样章。

3

依赖项属性不会将其值存储在字段中,而是存储在某个散列表中。因此它需要更少的内存,这对于GUI对象尤其重要,因为大多数属性将保留其默认值,因此不会占用更多内存。尽管依赖属性稍慢,因为来回摆放对象并在哈希表中查找。

的依赖对象框架还允许很多样改变通知等功能,我发现,这里介绍的内部运作一个很好的资源:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c33a8359-58be-430d-b949-cb6e6f32d8aa

我同意的语法来声明他们是丑了一点,但你可以创建助手来缓解这一点。