昨天學習了下wpf的以來屬性,記錄下自己的理解。
我們一般給乙個類設定乙個屬性很簡單,但是如果給乙個控制項設定乙個屬性,會比較麻煩。
比如說,自己做乙個button控制項,繼承自button
1 class mybutton : button2
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裡面配置那麼就需要使用以來屬性。
1public
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鍵,就可以自動生成乙個模版。
1public
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(static void oncolorchanged(dependencyobject obj,dependencypropertychangedeventargs args)"myproperty", -- 名字
typeof(int), --該屬性的型別
typeof(ownerclass), --該屬性所屬類的型別
new propertymetadata(0));--屬性變化以後的處理
明白意思了也不是很複雜了,不過要記住處理函式的格式
而且別忘了要是靜態的。
最後還有一點,因為屬性是靜態的,也就是說它是全域性乙份的,所以在處理的時候要很小心。
1static
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...