次の方法で共有


方法 : 依存関係プロパティを実装する

更新 : 2007 年 11 月

この例では、共通言語ランタイム (CLR) のプロパティを DependencyProperty フィールドで補足する方法、つまり依存関係プロパティを定義する方法を示します。独自に定義したプロパティが Windows Presentation Foundation (WPF) のさまざまな機能、たとえばスタイル、データ バインディング、継承、アニメーション、既定値をサポートできるようにするには、そのプロパティを依存関係プロパティとして実装します。

使用例

次に示す例では、最初に Register メソッドを呼び出して依存関係プロパティを登録します。依存関係プロパティの名前と特性を格納するときに使用する識別子フィールドの名前は、Register の呼び出し時に依存関係プロパティに対して選択した Name でなければなりません。これに、リテラル文字列 Property が付加されます。たとえば、登録する依存関係プロパティの Name が Location ならば、この依存関係プロパティに対して定義する識別子フィールドの名前は LocationProperty とする必要があります。

この例では、依存関係プロパティとその CLR アクセサの名前は State、識別子フィールドは StateProperty、プロパティの型は Boolean、依存関係プロパティを登録する型は MyStateControl です。

このパターンに従って名前が付けられていない場合は、定義したプロパティがデザイナから正しく報告されず、プロパティ システムのスタイル適用の一部が予期したとおりに動作しなくなる可能性があります。

依存関係プロパティの既定のメタデータを指定することもできます。State 依存関係プロパティの既定値を false として登録する例を次に示します。

public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); } 
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}

サンプル全体については、「依存関係プロパティを含むカスタム クラスのサンプル」を参照してください。

単にプライベート フィールドを使用して CLR プロパティを補足するのではなく依存関係プロパティを実装する理由とその方法の詳細については、「依存関係プロパティの概要」を参照してください。

参照

概念

依存関係プロパティの概要

その他の技術情報

プロパティに関する「方法」トピック

プロパティのサンプル