次の方法で共有


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) コンストラクターを呼び出します。これにより、 DependencyProperty の既定値を報告する PropertyMetadata が作成されます。 次に、 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 値は、依存関係プロパティの動作の 2 つの側面を表します。

  • 所有者の型が値を明示的に初期化しない限り、または値がユーザー コードまたはその他のメカニズムによって設定されていない限り、プロパティの値として使用される既定値を提供します。
  • 依存関係プロパティ システムが依存関係プロパティが変更されたことを検出した場合に呼び出されるコールバックを参照します。 通常、依存関係プロパティには、これらの動作の一方または両方が必要な場合にのみ PropertyMetadata 値が必要です。 それ以外の場合、依存関係プロパティが依存関係プロパティ システムに登録されている場合は、propertyMetadata パラメーターに null の値を渡すことができます。 詳細については、「 DependencyProperty.Register」を参照してください。

PropertyMetadata にプロパティ変更コールバック参照が含まれている場合、そのメソッドは、その PropertyMetadata が適用される DependencyProperty 識別子を公開するクラスの静的メソッドである必要があります。 このメソッドを記述する方法については、「 カスタム依存関係プロパティ 」および PropertyChangedCallback デリゲートのリファレンス トピックも参照してください。

注意

作成されると、PropertyMetadata インスタンスには、コールバックを検索したり、コールバックのメソッド名を決定したりするために使用できるプロパティがありません。 この情報は依存関係プロパティの実装の詳細と見なされ、依存関係プロパティ システム自体だけがそのメソッドを呼び出すことができる必要があります。

PropertyMetadata 値のインスタンス化

PropertyMetadata インスタンスをインスタンス化できるメソッドには、コンストラクターと静的な PropertyMetadata.Create メソッドの 2 つがあります。 これらの各メソッドには、複数のシグネチャがあります。 コンストラクターを使用する方が一般的です。 ただし、依存関係プロパティの既定値メカニズムをスレッド セーフにする場合は、 PropertyMetadata.Create を使用する必要があります。 詳細については、「カスタム依存関係プロパティ」トピックの「カスタム依存関係プロパティの プロパティ メタデータ」セクションを参照してください。

コンストラクター

PropertyMetadata(Object)

プロパティの既定値を使用して、 PropertyMetadata クラスの新しいインスタンスを初期化します。

PropertyMetadata(Object, PropertyChangedCallback)

プロパティの既定値とコールバック参照を使用して、 PropertyMetadata クラスの新しいインスタンスを初期化します。

プロパティ

CreateDefaultValueCallback

既定のプロパティ値を提供するコールバック メソッドへの参照を取得します。

DefaultValue

依存関係プロパティの既定値を取得します。

メソッド

Create(CreateDefaultValueCallback)

PropertyMetadata 値を作成し、依存関係プロパティの既定値を確立するコールバックを指定します。

Create(CreateDefaultValueCallback, PropertyChangedCallback)

PropertyMetadata 値を作成し、依存関係プロパティの既定値を確立するコールバックと、プロパティ変更コールバックを指定します。

Create(Object)

依存関係プロパティの固定既定値を指定して、 PropertyMetadata 値を作成します。

Create(Object, PropertyChangedCallback)

PropertyMetadata 値を作成し、依存関係プロパティの固定既定値とプロパティ変更コールバックを指定します。

適用対象

こちらもご覧ください