依賴屬性 附加屬性通俗理解

2022-07-25 18:24:15 字數 2493 閱讀 9603

依賴屬性(dependencyproperty)

1.概念

依賴屬性是一種可以自己沒有值,並能通過使用binding從資料來源獲得值的屬性(通俗的講,就是依賴在別的屬性上)。

依賴屬性是為了解決普通屬性因繼承而帶來的物件膨脹。

例如button的繼承

button->buttonbase->contentcontrol->control->frameworkelement->uielement->visual->dependencyobject->...

所以每次繼承,父類的私有欄位都會被繼承下來。繼承樹的低端物件不可避免的膨脹。大多數屬性並沒有被修改,仍然保持著父類定義時的預設值。

定義依賴屬性

例:// 定義依賴屬性

public static readonly dependencyproperty nameproperty;

註冊依賴屬性

必須在於其關聯的靜態建構函式中註冊

新增屬性封裝器

public string title

get 

set 

建立屬性封裝器時,應當只包含對setvalue()和getvalue()方法的呼叫,不應當新增任何驗證屬性值的額外**、引發事件的**等。這是因為wpf中的其他功能可能會忽略屬性封裝器,並直接呼叫setvalue()和getvalue()方法。

屬性封裝器不是驗證資料或引發事件的正確位置,使用依賴屬性**函式(dependency-property.validate valuecallback**函式進行驗證操作)

當屬性變化時,如果希望進行響應,有兩種選擇--可以使用屬性值建立繫結,也可以編寫能夠自動改變其他屬性或開始動畫的觸發器。

依賴屬性的優點:

① 優化了屬性的儲存,減少了不必要的記憶體使用

② 加入了屬性變化通知,限制,驗證等

③ 可以儲存多個值,配合人expression以及

animation

等,打造出更靈活的使用方式

eg:

1

public

partial

class

mainwindow : window2;

7this.stkpnltest.datacontext =testtitle;8}

910public

class

testtitle : dependencyobject

1115

set16}17

//定義依賴屬性

18public

static

readonly dependencyproperty nameproperty =

19 dependencyproperty.register("

title

", typeof(string), typeof

(testtitle));20}

21 }

xaml:

1

"stkpnltest

">2"

txttest1

"3 margin="10"

4 text="

">5"

txttest2

"6 margin="10"

7 text="

">

8

附加屬性

1.概念

附加屬性是一種依賴屬性,不同之處在於附加屬性被應用到的類並非定義附加屬性的那個類。

定義附加屬性

定義附加屬性,需要使用registerattached()方法,而不是使用

register()

方法當建立附加屬性時,不必定義.net屬性封裝器。這是因為附加屬性可以被用於任何物件。例如,

grid

。row

屬性可能被用於

grid

物件,也可能被用於其他元素上。

不使用.net屬性封裝器,反而附加屬性需要呼叫兩個靜態方法來設定和獲取屬性值,這兩個方法使用為人熟知的

setvalue()

和getvalue()方法,這兩個方法應當命名為setpropertyname()和getpropertyname()。

附加屬性與依賴屬性的區別

1.附加屬性使用的registerattached方法,而依賴屬性使用的是register方法

2.附加屬性使用兩個方法進行包裝,依賴屬性使用clr屬性對getvalue和set value兩個方法進行包裝。

3.附加屬性被應用到的類並非定義附加屬性的那個類,依賴屬性被應用到定義附加屬性的那個類。

wpf 依賴屬性和附加屬性

原文 wpf 依賴屬性和附加屬性 1 依賴屬性 解釋 依賴屬性是配合binding出現的產物,功能主要是配合binding。作用 一 當自定義usercontrol時,需要與宿主 父窗體 雙向繫結值時,用到依賴屬性。2 附加屬性 解釋 附加屬性是配合控制項或自定義型別出現的產物 作用 1 主要是擴充...

wpf 依賴屬性和附加屬性

1 依賴屬性 解釋 依賴屬性是配合binding出現的產物,功能主要是配合binding。作用 一 當自定義usercontrol時,需要與宿主 父窗體 雙向繫結值時,用到依賴屬性。2 附加屬性 解釋 附加屬性是配合控制項或自定義型別出現的產物 作用 1 主要是擴充套件控制項時用的較多,比如擴充套件...

WPF 依賴屬性和附加屬性

依賴屬性 依賴屬性就是自己沒有值,通過binding從資料來源獲得值,就是依賴在別人身上,擁有依賴屬性的物件稱為依賴物件。依賴屬性的值存在 在wpf執行時,維護了乙個全域性的hashtable訪問依賴屬性的值。二 附加屬性 附加屬性就是自己沒有這個屬性,在某些上下文中需要就被附加上去。比如textb...