2010-04-02 220 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

我同意的語法來聲明他們是醜了一點,但你可以創建助手來緩解這一點。