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

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

使用例

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

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

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

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

  Public Class MyStateControl
      Inherits ButtonBase
    Public Sub New()
        MyBase.New()
    End Sub
    Public Property State() As Boolean
      Get
          Return CType(Me.GetValue(StateProperty), Boolean)
      End Get
      Set(ByVal value As Boolean)
          Me.SetValue(StateProperty, value)
      End Set
    End Property
    Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
  End Class
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 プロパティを補足するのではなく依存関係プロパティを実装する理由とその方法の詳細については、「依存関係プロパティの概要」を参照してください。

参照

概念

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

その他の技術情報

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