PropertyMetadata 類別

定義

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

/// [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
繼承
Object IInspectable 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 值,並指定相依性屬性的固定預設值,以及屬性變更回呼。

適用於

另請參閱