PropertyMetadata 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
- 繼承
- 屬性
範例
這個範例會呼叫 PropertyMetadata (Object) 建構函式,這會建立 , PropertyMetadata
以報告 DependencyProperty的預設值。
PropertyMetadata
然後在呼叫RegisterAttached時用於附加屬性註冊。
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);
}
}
備註
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 值,並指定相依性屬性的固定預設值,以及屬性變更的回呼。 |