深入探討WPF依賴(lài)屬性使用技巧
編程人員在如今這樣一個(gè)技術(shù)更新?lián)Q代速度非??斓臅r(shí)代里,必須要通過(guò)不斷的學(xué)習(xí),增長(zhǎng)自己的知識(shí)才能不被淘汰。如果有人問(wèn)WPF是什么,編程人員必須要知道怎么回答。#t#
.NET Framework 3.0 引入了一個(gè)新的屬性類(lèi)型叫依賴(lài)屬性 , WPF,WF 都在使用依賴(lài)屬性用來(lái)實(shí)現(xiàn)樣式化 , 數(shù)據(jù)綁定等 . 我們更多的使用依賴(lài)屬性是為了讓父元素的屬性值在邏輯樹(shù)上慢慢的傳遞到其子元素中 , 從而可以在整個(gè)可是父元素的邏輯子元素中共享屬性值 .WF 就是依靠依賴(lài)屬性來(lái)在工作流中的各 Activity 間傳遞屬性值的 . 所以 , 依賴(lài)屬性?xún)?nèi)建的傳遞變更通知的能力是其***特征 .
什么時(shí)候需要定義WPF依賴(lài)屬性
1〉 如果希望屬性可以在Style中設(shè)定
2〉 如果希望屬性可以數(shù)據(jù)綁定
3〉 如果希望屬性可以由動(dòng)態(tài)資源(DynamicResource)設(shè)定
4〉 如果希望從父元素那里獲得值
5〉 如果希望屬性可以設(shè)置動(dòng)畫(huà)
6〉 如果希望屬性在被修改時(shí)能夠檢測(cè)值得有效性,修改后回調(diào)
7〉 如果希望使用已有的依賴(lài)屬性(Metadata override)
WPF依賴(lài)屬性示例:
- public partial class
UserControl1 : UserControl - {
- public UserControl1()
- {
- InitializeComponent();
- }
- public static readonly
DependencyProperty StudentProperty =
DependencyProperty.Register
("Student", typeof(String),
typeof(UserControl1), new Framewor
kPropertyMetadata("jiasongmao",
new PropertyChangedCallback
(OnStudentChanged)),new Validate
ValueCallback(StudentValidation)); - private static void OnStudentChanged
(DependencyObject sender,
DependencyPropertyChangedEventArgs e) - {
- MessageBox.Show("OnStudentChanged");
- }
- private static bool Student
Validation(object value) - {
- if(value.ToString().Contains
("jiasongmao")) - return true;
- return false;
- }
- public String Student
- {
- get { return GetValue(UserControl1.
StudentProperty).ToString(); } - set { SetValue(UserControl1.
StudentProperty, value); } - }
- }
希望上面介紹的WPF依賴(lài)屬性相關(guān)內(nèi)容對(duì)大家有所幫助。