依賴屬性 DependencyProperty

2021-09-07 21:36:05 字數 848 閱讀 1764

解決的問題:乙個控制項可能有幾百個clr屬性,如果每個clr屬性都是包裝乙個字段,那麼這個控制項耗費的記憶體太大了。依賴屬性就是解決這個問題的。

如何解決這個問題:使控制項的clr屬性不是包裝字段,而是包裝乙個dependencyproperty,並且這個dependencyproperty的記憶體不是分配在控制項內,而是採用某種機制分配在外部,以key-value的形式存在。另外,dependencyproperty還解決了乙個問題,當dependencyproperty作為繫結源的時候,還能自動更新繫結目標的顯示。

依賴屬性的理解:

1、依賴屬性就是可以自己沒有值,通過binding 從資料來源獲得值的屬性,也就是依賴在別人身上的屬性。

2、只有依賴屬性可以binding到別人身上,clr屬性不能binding到別人身上。

3、那為什麼在xaml**中會有如下的情況?

就是把textbox2的clr屬性text繫結到別人身上,這只是表面現象。實際上,上面的xaml等價的c#**為:

this.textbox2.setbinding(textbox.textproperty, new binding("text") );

setbinding的方法定義為 :setbinding(dependencyproperty dp, bindingbase binding);

4、有沒有包裝器,依賴屬性都存在。那為什麼還要使用clr屬性對依賴屬性包裝?

上面討論的是依賴屬性binding到別人身上,假如別人binding到依賴屬性上,該怎麼辦呢? clr屬性包裝器的作用就是:以「例項屬性」的形式向外界暴露依賴屬性,這樣依賴屬性就能成為資料來源的path。需要特別注意的是,當資料來源的path為依賴屬性,會自動通知target更新顯示。

WPF 依賴屬性

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

WPF依賴屬性

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

WPF 依賴屬性

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