方法: 依存関係プロパティを実装する
この例では、共通言語ランタイム (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));
}
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
単にプライベート フィールドを使用して CLR プロパティを補足するのではなく依存関係プロパティを実装する理由とその方法の詳細については、「依存関係プロパティの概要」を参照してください。
関連項目
.NET Desktop feedback