DependencyProperty クラス

2013/12/12

Windows Phone プロパティ システムに登録される依存関係プロパティを表します。依存関係プロパティは、値式、データ バインディング、アニメーション、プロパティ変更通知をサポートします。

System.Object
  System.Windows.DependencyProperty

Namespace:  System.Windows
アセンブリ:  System.Windows (System.Windows.dll 内)
XAML の XMLNS: xmlns にマップされていません。

public class DependencyProperty
<object property="dependencyPropertyName"/>
- or -
<object property="ownerTypeName.dependencyPropertyName"/>
- or -
<object property="attachedPropertyOwnerTypeName.attachedPropertyName"/>

XAML 値

dependencyPropertyName

目的の依存関係プロパティの登録名を指定する文字列。このプロパティが既定の XAML 名前空間内に存在しない場合は、この文字列の前に XAML 名前空間プレフィックスを指定することができます。

ownerTypeName.dependencyPropertyName

依存関係プロパティの所有者型、ドット (.)、プロパティ名を指定する文字列。ownerType の前に XML 名前空間プレフィックスを指定することもできます。これは遅延バインドのスタイルおよびテンプレートに特有の使用方法であり、コンテキストの解析のために依存関係プロパティの所有者を指定する必要があります。これは、解析時には TargetType が不明であるためです。

attachedPropertyOwnerTypeName.attachedPropertyName

アタッチされるプロパティの所有者、ドット (.)、アタッチされるプロパティ名を指定する文字列。attachedPropertyOwnerTypeName の前に XAML 名前空間プレフィックスを指定することもできます。

上記の構文をわかりやすくする方法は、XAML 名前空間割り当てが必要ない限り、依存関係プロパティ識別子フィールドの名前を使用することですが、サフィックスの Property は不要です。

DependencyProperty 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetMetadata指定された Type に登録されている依存関係プロパティに対してプロパティ メタデータ値を取得します。
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッド静的メンバーRegisterプロパティ名、プロパティ型、所有者型、およびプロパティに対するプロパティ メタデータを指定して、依存関係プロパティを登録します。
パブリック メソッド静的メンバーRegisterAttachedプロパティ名、プロパティ型、所有者型、およびプロパティに対するプロパティ メタデータを指定して、添付依存関係プロパティを登録します。
パブリック メソッドToString現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
このページのトップへ

  名前説明
パブリック フィールド静的メンバーUnsetValueプロパティは存在するが、その値がプロパティ システムによって設定されていないことを示すために、プロパティ システムが null の代わりに使用する静的な値を指定します。
このページのトップへ

依存関係プロパティの概念の詳細については、「Windows Phone の依存関係プロパティ」を参照してください。

DependencyProperty のインスタンスは、ドキュメントで依存関係プロパティ識別子として扱われることがよくあります。識別子により、特定の DependencyObject 所有者型に対して登録された依存関係プロパティを参照する手段が提供されます。所有型がプロパティを登録するときには、DependencyProperty インスタンスを識別子として公開します。所有者型 DependencyObject は、Windows Phone のプロパティ システムに組み込まれるときに、依存関係プロパティに対してプロパティ ストアを提供します。

依存関係プロパティをコードで使用するときには、SetValue などのプロパティ システム メソッドの呼び出しに対する入力として、DependencyProperty 識別子を使用できます。ただし、ほとんどの場合には、"ラッパー" CLR プロパティを取得または設定することで、より単純に依存関係プロパティを取得または設定できます。この CLR プロパティは、一般に、XAML の使用方法または CLR 型システムに対して依存関係プロパティを公開します。詳細については、「Windows Phone の依存関係プロパティ」の「依存関係プロパティによる CLR プロパティのサポート」を参照してください。

DependencyProperty は、値を設定するための XAML 属性構文のネイティブ変換をサポートします。この属性構文は、SetterProperty 値を指定するときに使用します。この変換では、入力文字列に ownerTypeName.propertyName という形式を使用します。

名前でプロパティを指定するために使用でき、特定のデータやアニメーション API で使用される関連型として、PropertyPath があります。PropertyPath は、任意の CLR プロパティを参照するために使用できます (参照する CLR プロパティは、依存関係プロパティであっても、そうでなくてもかまいません)。PropertyPath は XAML で指定でき、オブジェクト階層内でプロパティを指定するために使用できます。

Windows Phone プロパティ システムは、DependencyProperty 識別子、および DependencyObject 上のプロパティ ストレージを使用して、XAML 添付プロパティ言語機能の実装をサポートします。

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

カスタム型のプロパティで、値式、データ バインディング、またはアニメーションをサポートする場合は、以下のガイドラインに従って、それらの CLR プロパティを依存関係プロパティで補足する必要があります。

  1. Register メソッドを使用して依存関係プロパティを登録します。このメソッドは DependencyProperty を返します。この戻り値を、アクセス可能で静的な読み取り専用フィールドとしてクラスに格納する必要があります。通常、この DependencyProperty 識別子フィールドの名前は、Property で終わる必要があります。

  2. 登録時に、プロパティの PropertyMetadata を指定することによって、プロパティの動作を詳細に定義できます。

  3. プロパティの CLR の get および set アクセサーを提供します。

次の例は、DependencyProperty がクラスのパブリックな静的メンバーとして設定される、基本的な使用方法を示しています。これは、Register を呼び出して戻り値を格納することによって行われます。


public static readonly DependencyProperty IsSpinningProperty = 
    DependencyProperty.Register(
    "IsSpinning", typeof(Boolean),
    typeof(SilverlightExampleClass), null
    );
public bool IsSpinning
{
    get { return (bool)GetValue(IsSpinningProperty); }
    set { SetValue(IsSpinningProperty, value); }
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

表示:
© 2015 Microsoft