(四)附加屬性

2021-08-07 17:35:19 字數 1704 閱讀 3281

舉個例子:

假設我們有乙個人的類people,它有可能在與學校相關的工作中用到(記錄學號,專業,班級)

它也有可能在與公司相關的工作中用到(部門,專案),所以我們在定義people類時不應該包含class,id等等,這些應該放在school這些類裡,因為id,class等是學校附加給people的。

在wpf中我們在布局中都用到了附加屬性,比如:

"10">

... canvas.top="0"/>

... canvas.top="30"/>

顯然button裡並沒有top,left等屬性,這些屬性是容器給附加上的。當你把控制項放在grid裡就讓grid給它附上column和row屬性,放在canvas裡,canvas就為它附上top,left屬性,放在dockpanel裡就讓dockpanel為它附上dock屬性。

我們下面用上面所說的people類為例:

public

class school:dependencyobject

public

static

void

setmyproperty(dependencyobject obj, int

value)

//與依賴屬性的註冊不同 附加屬性使用registerattached

public

static

readonly dependencyproperty gradeproperty =

dependencyproperty.registerattached("gradeproperty", typeof(int), typeof(school), new propertymetadata(0));

}

繼續上面的例子:

class people:dependencyobject //依賴物件

//使用

people p = new people();

school.setgrade(p,6); //設定

int grade = school.getgrade(p);//獲取

在上面的依賴屬性的值被儲存在people的例項p中的effectivevalueentry陣列中。

slider>

slider>

canvas.left=""

canvas.top="">rectangle>

"elli" width="30" height="30" fill="red">

對應的後台**:

public

mainwindow()//視窗建構函式

);elli.setbinding(canvas.topproperty, new binding("value") );

}

在上面的例子中我們整個窗體用canvas布局,用兩個slider控制矩形和圓在canvas中的橫縱座標。其中矩形在xaml中binding,圓在c#**中。如上**。下面是效果演示圖:

WPF 附加屬性

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

WPF 附加屬性

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

實驗四附加

擴充套件實現源 include include include define true 1 define false 0 define ok 1 define error 0 define overflow 2 define null 0 define maxlen 10 define large ...