PropertyMetadata 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class PropertyMetadata
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class PropertyMetadata
Public Class PropertyMetadata
- 繼承
- 屬性
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
範例
此範例會呼叫 PropertyMetadata (Object) 建構函式,這會建立 PropertyMetadata 來報告 DependencyProperty的預設值。 然後,呼叫 RegisterAttached 時,會使用 PropertyMetadata 進行附加屬性註冊。
public abstract class AquariumServices : DependencyObject
{
public enum Buoyancy {Floats,Sinks,Drifts}
public static readonly DependencyProperty BuoyancyProperty = DependencyProperty.RegisterAttached(
"Buoyancy",
typeof(Buoyancy),
typeof(AquariumServices),
new PropertyMetadata(Buoyancy.Floats)
);
public static void SetBuoyancy(DependencyObject element, Buoyancy value)
{
element.SetValue(BuoyancyProperty, value);
}
public static Buoyancy GetBuoyancy(DependencyObject element)
{
return (Buoyancy)element.GetValue(BuoyancyProperty);
}
}
Public Class AquariumServices
Inherits DependencyObject
Public Enum Buoyancy
Floats
Sinks
Drifts
End Enum
Public Shared ReadOnly BuoyancyProperty As DependencyProperty = _
DependencyProperty.RegisterAttached(
"Buoyancy", _
GetType(Buoyancy), _
GetType(AquariumServices), _
New PropertyMetadata(Buoyancy.Floats))
Public Sub SetBuoyancy(element As DependencyObject, value As Buoyancy)
element.SetValue(BuoyancyProperty, value)
End Sub
Public Function GetBuoyancy(element As DependencyObject) As Buoyancy
GetBuoyancy = CType(element.GetValue(BuoyancyProperty), Buoyancy)
End Function
End Class
備註
定義 PropertyMetadata 實例是定義自訂相依性屬性案例的一部分。 如需資訊和範例,請參閱 自訂相依性屬性。
PropertyMetadata 值代表相依性屬性行為的兩個層面:
- 提供預設值,除非擁有者型別特別初始化值,或由使用者程式碼或其他機制設定值,否則提供預設值做為 屬性的值。
- 參考相依性屬性系統偵測到相依性屬性已變更時所叫用的回呼。 一般而言,如果需要其中一個或兩種行為,相依性屬性只需要 PropertyMetadata 值。 否則,當相依性屬性向相依性屬性系統註冊時,可以傳遞propertyMetadata參數的null值。 如需詳細資訊,請參閱 DependencyProperty.Register。
如果您的 PropertyMetadata 包含屬性變更的回呼參考,該方法必須是類別的靜態方法,該方法會公開套用 PropertyMetadata 的 DependencyProperty 識別碼。 如何在 自訂相依性屬性 以及 PropertyChangedCallback 委派的參考主題中描述這個方法。
注意
建立之後,PropertyMetadata 實例沒有可用來尋找回呼的屬性,甚至無法判斷回呼的方法名稱。 該資訊會被視為相依性屬性的實作詳細資料,而且只有相依性屬性系統本身必須能夠叫用該方法。
具現化 PropertyMetadata 值
有兩種方法可以具現化 PropertyMetadata 實例:建構函式和靜態 PropertyMetadata.Create 方法。 每個方法都有多個簽章。 使用建構函式比較常見。 不過,如果您想要讓相依性屬性的預設值機制成為安全線程,則必須使用 PropertyMetadata.Create 。 For more info, see the "Property metadata for a custom dependency property" section of the Custom dependency properties topic.
建構函式
PropertyMetadata(Object) |
使用屬性預設值,初始化 PropertyMetadata 類別的新實例。 |
PropertyMetadata(Object, PropertyChangedCallback) |
使用屬性預設值和回呼參考,初始化 PropertyMetadata 類別的新實例。 |
屬性
CreateDefaultValueCallback |
取得提供預設屬性值之回呼方法的參考。 |
DefaultValue |
取得相依性屬性的預設值。 |
方法
Create(CreateDefaultValueCallback) |
建立 PropertyMetadata 值,指定回呼以建立相依性屬性的預設值。 |
Create(CreateDefaultValueCallback, PropertyChangedCallback) |
建立 PropertyMetadata 值,指定回呼以建立相依性屬性的預設值,以及屬性變更回呼。 |
Create(Object) |
建立 PropertyMetadata 值,並指定相依性屬性的固定預設值。 |
Create(Object, PropertyChangedCallback) |
建立 PropertyMetadata 值,並指定相依性屬性的固定預設值,以及屬性變更回呼。 |