WPF 依賴屬性

2021-10-13 07:31:28 字數 2174 閱讀 8392

依賴屬性就是自己本身沒有值,可以通過binding獲取到資料來源的值。具有依賴屬性的物件稱為依賴物件,依賴物件包含一般的控制項(textbox.text或listbox.itemssourceproperty就是乙個典型的依賴屬性),也包含從有依賴屬性的類生成的物件(後面會舉例說明)。

節省記憶體空間

每個clr屬性都包含乙個非static的字段,如果乙個例項具有多個屬性,建立例項數目多的話,占用記憶體較大。

clr屬性:

public

class

human

setelse}}

}

而依賴屬性允許物件在建立的時候並不包含用於儲存資料的空間,只保留在需要用到資料的時候能夠獲得該預設值,即用其他物件資料或者實時分配空間的能力。

在依賴屬性實現的過程中,依賴物件通過dependencyobject實現,依賴屬性的由dependencyproperty實現,dependencyobject中存在setvalue方法和getvalue方法,引數為dependencyproperty。依賴物件和依賴屬性相結合才能實現依賴屬性的效果。

1、建立乙個依賴屬性(通過dependencyproperty.register()方法來註冊)

2、建立乙個clr屬性(clr屬性中用setvalue方法和getvalue方法繼承於dependencyobject類,引數為依賴屬性)

3、做乙個setbinding包裝,這樣包裝之後可以用student.setbinding()的方法來設定binding,符合我們一般的書寫習慣

4、設定binding

備註:1、沒有實現inotifypropertychanged介面,就可以實現資料變化就在ui上呈現,依賴屬性預設就有這樣的功能。

2、為啥dependencyproperty前面要用static readonly來修飾????具體解答在《wpf深入淺出》7.2.3節,但我為啥看不了dependencyproperty類的方法的原始碼呢??

"重新整理"

/>

<

/stackpanel>

主程式**:

public

partial

class

mainwindow

:window

; student.

setbinding

(student.dependencyproperty, binding);}

private

void

button1_click

(object sender,

routedeventargs e)

;this

.text2.

setbinding

(textbox.textproperty, binding);}

}

資料來源及依賴屬性的設定:

class

student

:dependencyobject

get}

//setbinding包裝,這樣包裝之後可以用student.setbinding()的方法來設定binding,符合我們一般的書寫習慣

public

bindingexpressionbase

setbinding

(dependencyproperty dependencyproperty,

bindingbase bindingbase)

}

WPF 依賴屬性

原文 wpf 依賴屬性 屬性和事件是.net抽象模型的核心部分,wpf在這之上增加了dependency property 依賴屬性 依賴屬性使用更高效的儲存機制,並且支援附加的功能,更改通知 屬性值繼承 在元素樹中向下傳播預設屬性值 以及減少屬性儲存空間。依賴屬性是wpf動畫 資料繫結和樣式的基礎...

WPF依賴屬性

依賴屬性是一種可以自己沒有值,並能通過使用binding從資料來源獲取值 依賴在別人身上 的屬性。優點 wpf的所有控制項都是依賴屬性。依賴物件被dependencyobject類實現,依賴屬性由dependencyproperty類實現。dependencyobject有getvalue setv...

WPF 依賴屬性

屬性是我們再熟悉不過的了,那麼究竟依賴屬性怎麼寫呢?依賴屬性和屬性到底有什麼區別和聯絡呢?其實依賴屬性的實現很簡單,只要做以下步驟就可以實現 第一步 讓所在型別繼承自 dependencyobject基類,在wpf中,我們仔細觀察框架的類圖結構,你會發現幾乎所有的 wpf 控制項都間接繼承自depe...