WPF依賴屬性 增加的屬性像普通屬性一樣使用

對於WPF瞭解的不多,特別是新添加一個控件時對裏面的元素操作時就比較麻煩。

比如:對於一個TextBlock控件text屬性修改的時候,就比較麻煩。

一般的方法是把控件實例完以後再引用TextBlock控件給其賦值,這種方法雖說可以解決問題,但是覺得不是很好,與winform處理的方式相似,既然wpf比winform新,那麼winform這種繁瑣的問題,必然會被wpf較爲簡潔的方法替代。

我自己對於WPF的依賴屬性是屬於知識匱乏的級別,但是通過其他人寫的代碼,照葫蘆畫瓢竟然能解決問題,瞬間讓我膨脹起來,必須記下這個使用方法,一來加強記憶,便於以後更深入的研究。二來,分享原本就是一件快樂的事,能幫助到人,那是更快樂的事。

聲明一個 public static readonly的DependencyProperty類型變量,留一個問題爲什麼要是 public static readonly類型???

        public static readonly DependencyProperty RecipeUnitNameProperty = DependencyProperty.Register(
            RecipeUnitPropertyName,
            typeof(String),
            typeof(uc_recipeStatus),
            new UIPropertyMetadata("",new PropertyChangedCallback(RecipeUnitNamePropertyChanged))
            );

一般都會在變量名後面加上Property以此後綴作爲其他人區別普通屬性的規範。

在靜態構造函數中向屬性系統註冊依賴屬性,並獲取對象引用。依賴屬性是通過調用DependencyProperty.Register靜態方法創建,該方法需要傳遞一個屬性 名稱,這個名稱非常重要,在定義控件Style和Template的時候,Setter的Property屬性填入的值就是註冊依賴屬性時使用的名稱。propertyType指明瞭依賴屬性實際的類型,ownerType指明瞭是哪個類註冊了此依賴屬性,最後typeMetadata存放了一些依賴屬 性的元信息,包括依賴屬性使用的默認值,還有屬性值發生變更時的通知函數(抄)

完成了一個依賴屬性的註冊,那麼我們怎樣才能對這個依賴屬性進行讀寫呢?當然是提供一個依賴屬性的實例化包裝屬性,通過這個屬性來實現具體的讀寫操作。和CLR屬性不同,依賴屬性不是直接對私有變量的操縱,而是通過GetValue()和SetValue()方法來操作屬性值的,可以使用標準的.NET屬性定義語法進行封裝,使依賴屬性可以像標準屬性那樣來使用(抄)
 

        public String RecipeUnitName
        {
            get
            {
                return (String)GetValue(RecipeUnitNameProperty);
            }
            set
            {
                SetValue(RecipeUnitNameProperty, value);
            }
        }

使用的時候就像使用其他屬性一樣賦值就可以啦,終於水完一篇了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章