舉個例子:
假設我們有乙個人的類people,它有可能在與學校相關的工作中用到(記錄學號,專業,班級)在wpf中我們在布局中都用到了附加屬性,比如:它也有可能在與公司相關的工作中用到(部門,專案),所以我們在定義people類時不應該包含class,id等等,這些應該放在school這些類裡,因為id,class等是學校附加給people的。
"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 ...