WPF中的依賴屬性

2022-01-19 11:02:49 字數 2420 閱讀 9719

昨天學習了下wpf的以來屬性,記錄下自己的理解。

我們一般給乙個類設定乙個屬性很簡單,但是如果給乙個控制項設定乙個屬性,會比較麻煩。

比如說,自己做乙個button控制項,繼承自button

1     class mybutton : button

2

11 set

12 ;

15 }

16 }

17 }

這個屬性目的是設定按鈕的背景色。這沒有什麼問題,但是在設定樣式的時候會出問題。

1

<

>

2<

color

x:key

="myforcecolor"

>red

color

>

3<

color

x:key

="mybackcolor"

>white

color

>

4<

style

x:name

="mystyle"

targettype

>

5<

setter

property

="backcolor"

value

="red"

/>

6style

>

這個時候會出現編譯錯誤,意思就是說不能夠在style裡面直接設定自定義屬性。

如果想在style裡面配置那麼就需要使用以來屬性。

1

public

class

mybutton : button218

get 19}

20public

color backcolor

2123

get 24}

2526

static

void

oncolorchanged(dependencyobject obj,

27dependencypropertychangedeventargs args)28;

33}34if (args.property ==backcolorproperty)35;

37}38}

3940

4142

4344 }

很坑爹啊,有木有,很複雜啊,有不有,這他媽誰能記得住啊。

不過微軟給了乙個快捷鍵來方便的生成模版,只要你輸入」prodp「,然後連續按兩次tab鍵,就可以自動生成乙個模版。

1

public

intmyproperty24

set5}6

7//using a dependencyproperty as the backing store for myproperty. this enables animation, styling, binding, etc...

8public

static

readonly dependencyproperty mypropertyproperty =

9 dependencyproperty.register("

myproperty

", typeof(int), typeof(ownerclass), new propertymetadata(0));

我們可以來看看註冊函式

dependencyproperty.register(

"myproperty", -- 名字

typeof(int), --該屬性的型別

typeof(ownerclass), --該屬性所屬類的型別

new propertymetadata(0));--屬性變化以後的處理

明白意思了也不是很複雜了,不過要記住處理函式的格式

static void oncolorchanged(dependencyobject obj,dependencypropertychangedeventargs args)

而且別忘了要是靜態的。

最後還有一點,因為屬性是靜態的,也就是說它是全域性乙份的,所以在處理的時候要很小心。

1

static

void

oncolorchanged(dependencyobject obj,

2dependencypropertychangedeventargs args)3;

8}9if (args.property ==backcolorproperty)10;

12}13 }

注意第四行,這句可以保證是的我改變的設定僅僅是當前物件的設定。而不是全域性的。

WPF 依賴屬性

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

WPF依賴屬性

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

WPF 依賴屬性

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