依賴屬性
什麼時候需要定義依賴屬性
1〉 如果希望屬性可以在style中設定
2〉 如果希望屬性可以資料繫結
3〉 如果希望屬性可以由動態資源(dynamicresource)設定
4〉 如果希望從父元素那裡獲得值
5〉 如果希望屬性可以設定動畫
6〉 如果希望屬性在被修改時能夠檢測值得有效性,修改後**
7〉 如果希望使用已有的依賴屬性(metadata override)
功能:1〉 資源
2〉 資料邦定
3〉 風格
4〉 動畫
5〉 metadata過載
6〉 屬性值繼承
依賴屬性的示例
public static readonly dependencyproperty isspinningproperty =
dependencyproperty.register(
...);
public bool isspinning
set
}資源
依賴屬性的值可以通過引用乙個資源來設定。資源一般放在乙個頁面(page/window)的根節點下的子節點。或者放在應用程式xmal檔案中。
示例:資源的定義
資源的使用
資料繫結
資料繫結可以實現在執行時通過獲取資料源的值來改變具有資料繫結的屬性值
下面的示例將設定button的content屬性的繫結,資料繫結到xml檔案
xml檔案如下:
<?xml version="1.0" encoding="utf-8" ?>
<
datapointlist
>
<
demodatasource
>
<
datapoint2
/>
<
datapoint3
/>
demodatasource
>
datapointlist
>
datapointlist/demodatasource/datapoint2」
}」>
風格(styles)
風格一般用來改變ui顯示
示例:定義,
使用:this is green
動畫
metadata 過載
通過在子類中過載父類中註冊過的依賴屬性可以改變該依賴屬性的行為。過載乙個metadata不需要 重新實現它。
示例如下:
public class spinnercontrol : itemscontrol
}依賴屬性的實現
註冊
如果希望屬性成為依賴屬性,你必須註冊該屬性到乙個由屬性系統維持的表中,並為其指定乙個唯一標示。
示例:public static readonly dependencyproperty aquariumgraphicproperty = dependencyproperty.register(
"aquariumgraphic",
typeof(uri),
typeof(aquariumobject),
new frameworkpropertymetadata(null,
frameworkpropertymetadataoptions.affectsrender,
new propertychangedcallback(onurichanged) )
);
public uri aquariumgraphic
set }
property metadata
當註冊依賴屬性時,將通過屬性系統建立乙個metadata object來儲存屬性特徵。可以在其中設定屬性的預設值,**函式等。
有兩種metadata
1>frameworkpropertymetadata
一般用在繼承自frameworkelement的類中,它提供比propertymetadata更多的選項來初始化屬性,示例如上。
2>propertymetadata
一般初始化屬性的預設值和**函式
示例如下:
public datetime time
private set
}public static dependencyproperty timeproperty = dependencyproperty.register(
"time",
typeof(datetime),
typeof(myclock),
new propertymetadata(datetime.now, new propertychangedcallback(ondatetimeinvalidated)));
private static void ondatetimeinvalidated(dependencyobject d, dependencypropertychangedeventargs e)
WPF 依賴屬性
原文 wpf 依賴屬性 屬性和事件是.net抽象模型的核心部分,wpf在這之上增加了dependency property 依賴屬性 依賴屬性使用更高效的儲存機制,並且支援附加的功能,更改通知 屬性值繼承 在元素樹中向下傳播預設屬性值 以及減少屬性儲存空間。依賴屬性是wpf動畫 資料繫結和樣式的基礎...
WPF依賴屬性
依賴屬性是一種可以自己沒有值,並能通過使用binding從資料來源獲取值 依賴在別人身上 的屬性。優點 wpf的所有控制項都是依賴屬性。依賴物件被dependencyobject類實現,依賴屬性由dependencyproperty類實現。dependencyobject有getvalue setv...
WPF 依賴屬性
屬性是我們再熟悉不過的了,那麼究竟依賴屬性怎麼寫呢?依賴屬性和屬性到底有什麼區別和聯絡呢?其實依賴屬性的實現很簡單,只要做以下步驟就可以實現 第一步 讓所在型別繼承自 dependencyobject基類,在wpf中,我們仔細觀察框架的類圖結構,你會發現幾乎所有的 wpf 控制項都間接繼承自depe...