共用方式為


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的預設值。 呼叫 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);
    }
}

備註

定義 PropertyMetadata 實例是定義自定義相依性屬性的案例的一部分。 如需資訊和範例,請參閱自定義相依性屬性。

PropertyMetadata 值代表相依性屬性行為的兩個層面:

  • 提供預設值,除非擁有者類型特別初始化值,或是由使用者程式代碼或其他機制設定值,否則會提供預設值作為 屬性的值。
  • 參考如果相依性屬性系統偵測到相依性屬性已變更,所叫用的回呼。 一般而言,如果想要其中一個或兩種行為,相依性屬性只需要 PropertyMetadata 值。 否則,當相依性屬性向相依性屬性系統註冊相依性屬性時,可以傳遞 propertyMetadata 參數的值 null。 如需詳細資訊,請參閱 DependencyProperty.Register

如果您的 PropertyMetadata 包含屬性變更的回呼參考,該方法必須是公開套用 PropertyMetadataDependencyProperty 標識符的類別靜態方法。 如何在自定義相依性屬性 描述此方法,以及 PropertyChangedCallback 委派的參考主題。

注意

建立之後,PropertyMetadata 實例沒有可用來尋找回呼的屬性,甚至無法判斷回呼的方法名稱。 該資訊會被視為相依性屬性的實作詳細數據,而且只有相依性屬性系統本身才能叫用該方法。

具現化 PropertyMetadata 值

有兩種方法可以具現化 PropertyMetadata 實例:建構函式和靜態 PropertyMetadata.Create 方法。 每個方法都有多個簽章。 使用建構函式比較常見。 不過,如果您想要讓相依性屬性的預設值機制安全,則必須使用 PropertyMetadata.Create。 如需詳細資訊,請參閱 自定義相依性屬性 主題的一節。

建構函式

PropertyMetadata(Object, PropertyChangedCallback)

使用屬性預設值和回呼參考,初始化 PropertyMetadata 類別的新實例。

PropertyMetadata(Object)

使用屬性預設值,初始化 PropertyMetadata 類別的新實例。

屬性

CreateDefaultValueCallback

取得提供預設屬性值之回呼方法的參考。

DefaultValue

取得相依性屬性的預設值。

方法

Create(CreateDefaultValueCallback, PropertyChangedCallback)

建立 PropertyMetadata 值、指定回呼來建立相依性屬性的預設值,以及屬性變更回呼。

Create(CreateDefaultValueCallback)

建立 PropertyMetadata 值,並指定回呼,以建立相依性屬性的預設值。

Create(Object, PropertyChangedCallback)

建立 PropertyMetadata 值、指定相依性屬性的固定預設值,以及屬性變更回呼。

Create(Object)

建立 PropertyMetadata 值,並指定相依性屬性的固定預設值。

適用於

另請參閱