DependencyProperty クラス

定義

依存関係プロパティ システムに登録されている依存関係プロパティを表します。 依存関係プロパティは、値式、データ バインディング、アニメーション、およびプロパティ変更通知のサポートを提供します。 DependencyProperty 値が依存関係プロパティの識別子として機能する方法の詳細については、「 依存関係プロパティの概要」を参照してください。

public ref class DependencyProperty sealed
/// [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 DependencyProperty final
[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 sealed class DependencyProperty
Public NotInheritable Class DependencyProperty
継承
Object Platform::Object IInspectable DependencyProperty
属性

この例では、 DependencyProperty がクラスのパブリック静的メンバーとして確立される基本的な使用方法を示します。 これを行うには、 Register を呼び出し、戻り値をクラスのメンバーとして格納します。 その他の例については、「 カスタム依存関係プロパティ」を参照してください。

public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(String),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}

注釈

依存関係プロパティの概念については、 依存関係プロパティの概要に関するトピックで詳しく説明します。

DependencyPropertyのインスタンスは、多くの場合、依存関係プロパティ識別子としてドキュメントで参照されます。 識別子は、特定の DependencyObject 所有者型に登録された依存関係プロパティを参照する方法を提供します。 所有者型がプロパティを登録すると、所有者型は、 DependencyProperty インスタンスを識別子として公開します。これは、所有者クラスの静的メンバーです。

所有者 DependencyObject は、依存関係プロパティのプロパティ ストアを提供します。 コードで依存関係プロパティを使用する場合は、SetValue などのプロパティ システム メソッドの呼び出しの入力としてDependencyProperty識別子を使用できます。 ただし、ほとんどの場合、 ラッパーを取得または設定することで、依存関係プロパティの取得または設定が簡単になります。この概念については、 依存関係プロパティの概要で説明します。

DependencyProperty では、値を入力するための XAML 属性構文のネイティブ変換がサポートされています。これは、 Setterプロパティ 値を指定するときに使用されます。 この変換では ownerTypeName を使用します入力文字列の propertyName フォーム。

Note

プロパティを名前で指定するためにも使用でき、特定のデータとアニメーション API で必要な関連構文は 、プロパティ パスの構文です。 プロパティ パスを使用して、プロパティを持つクラスの構造とそのプロパティの値を参照できます。 詳細については、「 プロパティ パスの構文」を参照してください。

Tip

Microsoft .NET言語 (C#) を使用してプログラミングする場合、TypeName 型は System.Type としてプロジェクトされます。 C# を使用してプログラミングする場合、 typeof 演算子を使用して型の System.Type への参照を取得するのが一般的です。

C++/WinRT を使用している場合は、winrt::xaml_typename<T>() ヘルパー関数を使用してTypeName オブジェクトを作成できます。 詳細とコード例については、 winrt::xaml_typename 関数テンプレート を参照してください。

Windows ランタイムは、DependencyObjectDependencyProperty識別子とプロパティ ストレージを持つ XAML 添付プロパティ言語機能を実装します。 詳細については、「 添付プロパティの概要」を参照してください。

カスタム依存関係プロパティ

カスタム型のプロパティで値の式、データ バインディング、またはアニメーションをサポートする場合は、次のガイドラインに従って依存関係プロパティを使用してプロパティをバックアップする必要があります。

  • Register メソッドを使用して依存関係プロパティを 登録 し、 DependencyPropertyを返します。 これは依存関係プロパティ識別子です。 このオブジェクトは、クラス内のアクセス可能な静的読み取り専用プロパティとして公開する必要があります。 慣例により、この DependencyProperty 識別子フィールドの名前は "Property" で終わる必要があります。
  • 登録時に、 プロパティの PropertyMetadata を指定して、プロパティの動作をさらに定義できます。
  • プロパティの get アクセサーと set アクセサーを指定します。これらはプロパティ ラッパーであり、すべての呼び出し元のプロパティへのアクセスを簡略化します。

依存関係プロパティ名への XAML 参照

XAML マークアップで通常設定されるプロパティの中には、値として DependencyProperty を使用するものもあります。 たとえば、XAML で Setter.Property を 設定します。 XAML でこのようなプロパティを設定するには、依存関係プロパティの名前を属性値として指定します。

Setter.Property の場合、依存関係プロパティ名を参照する型のスコープは、Setter が存在する StyleTargetType によって既に指定されています。 TargetType オブジェクトの依存関係プロパティの場合は、依存関係プロパティの単純な名前を使用して Setter.Property 値を指定できます。 たとえば、スライダーを対象とするスタイルがあり、Orientation プロパティのスタイルを設定する場合、Property 属性値は "Orientation" に設定できます。 単純な名前は、依存関係プロパティがターゲット型のより深い継承のクラスから取得されている限り、機能します。 たとえば、スライダーのスタイルで Visibility プロパティのスタイルを設定するには、Property 属性値 "Visibility" が機能します。 その場合 、可視性UIElement によって定義されましたが、 Slider に継承されます。

Setter.Property を使用して、添付プロパティ名を参照することもできます。 属性値には、XAML でその添付プロパティを属性として設定する場合と同様 に、AttachedPropertyOwner.AttachedPropertyName という形式を使用します。 たとえば、スタイルの添付プロパティ AutomationProperties.ItemType を設定する Setterを次に示します。<Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>

Note

依存関係プロパティの名前は、 DependencyProperty 静的プロパティ識別子の名前ではありません。 これは、プロパティが登録されている名前文字列であり、IntelliSense とリファレンス ドキュメントによって公開される場合にWindows ランタイムプログラミングにおけるそのプロパティの一般的な使用名Microsoft名前です。 言い換えると、XAML の Setter.Property に指定した文字列が "Property" で終わるのは望まれません (依存関係プロパティに実際にサフィックス "Property" が含まれているまれなケースを除きます)。

コードでの DependencyProperty (依存関係プロパティ識別子) の使用

DependencyProperty値を入力パラメーターとして使用するWindows ランタイム プロパティ システムのユーティリティ メソッドには、いくつかのメソッドがあります。 これらには次のものが含まれます。

プロパティ

名前 説明
UnsetValue

プロパティが存在することを示すために null ではなく、プロパティ システムによって使用される静的な値を指定しますが、その値はプロパティ システムまたはアプリ コードによって設定されません。

メソッド

名前 説明
GetMetadata(TypeName)

型に登録されている依存関係プロパティのプロパティ メタデータ値を取得します。 情報を取得する型を型参照として指定します。

Register(String, TypeName, TypeName, PropertyMetadata)

指定したプロパティ名、プロパティの型、所有者の型、およびプロパティのプロパティ メタデータを使用して依存関係プロパティを登録します。 このメソッドは、登録されている依存関係プロパティを所有する DependencyObject 派生クラスを定義または初期化するときに使用します。

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

プロパティの指定したプロパティ名、プロパティの種類、所有者の型、およびプロパティ メタデータを使用して、添付の依存関係プロパティを登録します。

適用対象

こちらもご覧ください