次の方法で共有


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 が作成されます。 は、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 値を必要とします。 それ以外の場合は、依存関係プロパティを依存関係プロパティ システムに登録するときに、propertyMetadata パラメーターに対して null の値を渡すことができます。 詳細については、「DependencyProperty.Register」を参照してください。

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

手記

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

PropertyMetadata 値のインスタンス化

インスタンスをインスタンス化できるメソッドには、コンストラクターと、PropertyMetadata.Create 静的 メソッドの 2 つがあります。 これらの各メソッドには、複数のシグネチャがあります。 コンストラクターを使用する方が一般的です。 ただし、依存関係プロパティの既定値メカニズム スレッド セーフにする場合は、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 値を作成します。

適用対象

こちらもご覧ください