談WPF中的附加屬性

2021-07-09 09:54:35 字數 1137 閱讀 5043

附加屬性,顧名思義,就是乙個原本不屬於某個物件,但是由於某種需要或環境,而附加在乙個物件上的屬性,

也就是把物件放入乙個特定的環境下,物件才會擁有的屬性,成為附加屬性。

在實際的開發中,在設計資料庫關係或實體類的時候就會遇到這樣的問題。

例如,有個student的類,他會有屬性來標記他所在的學校、班級、年級,

public class student

string id;

string name;

string classid;

string schoolid;

string majorid;

假如他去找實習,那麼這個類就要進行擴充套件,加入他實習所在部門id;

public class student

string id;

string name;

string classid;

string schoolid;

string majorid;

string departmentid;

也就是說只要環境一有所變化,那麼這個類的實現就要做改變,

而且如果有些學生沒有出去實習,那麼這個departmentid所佔的記憶體就被浪費掉了。

再舉個例子。

在wpf中我們常用的textbox 控制項,它可以放置在stackpanel,dockpanel,grid中,分別放置在這些容器時,需要有屬性設定textbox 放置的位置,

stackpanel最省事,但是放置在dockpanel時,就需要設定dockpanel.dock屬性,放置在grid中需要設定grid.row,grid.column,

而作為textbox的最初設計者,他壓根不知道控制項將會放在什麼地方,

所以根本不會準備屬性去存放以上所提到的屬性的值,但這些屬性是必須要設的啊,怎麼辦呢?

能不能在控制項被使用的過程中,再去附加一些屬性值呢,這就是附加屬性啦。

附加屬性的作用,就是將屬性和宿主剝離開,讓資料類的實現更加靈活。

附加屬性如何定義,就不用多說了,任何一本講wpf的都有詳細講解。

這裡想要提到乙個與依賴屬性不同的地方,依賴屬性將乙個和依賴屬性同名的屬性(去掉property),包裝成clr屬性。

附加屬性的包裝器是使用兩個靜態的方法分別包裝get屬性和set屬性兩個方法。

WPF 附加屬性

附加屬性的作用就是將屬性與資料型別 宿主 解耦,讓資料型別的設計更加靈活。其本質就是依賴屬性,兩者僅在註冊和包裝器上有一點區別。附加屬性 游標移動到類體中 花括號之間 輸入propa tab tab,附加屬性的框架就準備好了,繼續 tab tab 可以在幾個空缺間輪換並修改,直至按下enter。cl...

WPF 附加屬性

1 附加屬性 乙個屬性原來不屬於某個物件,但由於某種需求而被後來附加上去。附加屬性的本質是依賴屬性。2 附加屬性作用 將屬性與資料型別解耦,讓資料型別的設計的更加靈活。3 vs 2008中,依賴屬性的snippet是propdp,附加屬性的snippet是propa,屬性的snippet是prop。...

WPF 附加屬性彙總

本文內容翻譯自微軟官網部分內容 2 為什麼要使用附加屬性 使用附加屬性的目的是,允許子元素給父元素的屬性設定唯一值。乙個場景就是,ui子元素告知ui父元素,子元素自己應該如何在父元素中展示,例如dockpanel.dock屬性。這個屬性被建立為乙個附加屬性,因為它被設計為由被包含的子元素設定值而不是...