WPF依賴屬性 續 1

2021-09-07 20:45:09 字數 1317 閱讀 5001

原文:

wpf依賴屬性(續)(1)

也有人詳細介紹過,還原了依賴屬性的實現.通過閱讀後和閱讀源**並為了加深理解,下面則繼續依賴屬性的**.

如下**,name有乙個預設的空字串,test1方法新增了10000個物件,那麼在沒有改變people 的name屬性情況下,同時也建立了10000個空字串

public class 

people

set

}}public class

entitytest}}

問題:本乙個預設值可以解決的問題,卻用了10000個物件去解決,浪費了記憶體.

思路:為屬性建立乙個預設值

將_name欄位改為靜態

private static string _name="";
問題:雖然引用同乙個記憶體,但當任意修改乙個物件的name屬性時,則全部發生了變更.

思路:提供預設值,如屬性值發生變更,則使用修改的值,但不影響其他物件

**改進如下

public class 

people

set}

}

測試**

下面我們來看下wpf元素的依賴屬性,我們可以來比較下兩個不同物件的屬性元資料,返回的結果是相同,也說明了其內部機制也是如此,也是為了節省記憶體.

object.referenceequals(button.backgroundproperty.getmetadata(button1),

button.backgroundproperty.getmetadata(button2));

比較兩個物件的屬性,依然是相同,因為返回的是預設值

object.referenceequals(button1.background, button2.background);
然而為了節省記憶體,真的有必要這麼做嗎?這太麻煩了.

我們知道wpf控制項繼承而來的屬性有一大片,密密麻麻,當我們布局的的時候窗體上往往有著很多的元素,如下截圖.如果乙個物件以50個屬性(其實遠遠不止)來計算,那麼也是一筆不小的開銷,如果說依賴屬性一開始的動機是為了節省記憶體,實質上其內部功能已經遠遠不是節省記憶體這麼簡單了.下篇繼續

WPF 依賴屬性

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

WPF依賴屬性

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

WPF 依賴屬性

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