次の方法で共有


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

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

PropertyMetadata プロパティ変更コールバック参照が含まれている場合、そのメソッドは、それが適用される DependencyProperty 識別子 PropertyMetadata を公開するクラスの静的メソッドである必要があります。 このメソッドの作成方法については、「 カスタム依存関係プロパティ 」および 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 値を作成し、依存関係プロパティの固定既定値とプロパティ変更コールバックを指定します。

適用対象

こちらもご覧ください