PropertyMetadata 類別

定義

定義相依性屬性的行為層面,包括其註冊的條件。 如需如何 PropertyMetadata 用於相依性屬性的詳細資訊,請參閱 自訂相依性屬性

/// [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
繼承
Object IInspectable 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如果您的 包含屬性變更回呼參考,該方法必須是類別的靜態方法,該方法會公開套用的 PropertyMetadataDependencyProperty識別碼。 如何在 自訂相依性屬性 中描述這個方法,以及 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 值,並指定相依性屬性的固定預設值,以及屬性變更的回呼。

適用於

另請參閱