方法: 依存関係プロパティを実装するHow to: Implement a Dependency Property

この例では、共通言語ランタイム (CLR) プロパティをDependencyPropertyフィールドで戻して、依存関係プロパティを定義する方法を示します。This example shows how to back a common language runtime (CLR) property with a DependencyProperty field, thus defining a dependency property. 独自に定義したプロパティが Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) のさまざまな機能、たとえばスタイル、データ バインディング、継承、アニメーション、既定値をサポートできるようにするには、そのプロパティを依存関係プロパティとして実装します。When you define your own properties and want them to support many aspects of Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) functionality, including styles, data binding, inheritance, animation, and default values, you should implement them as a dependency property.

Example

次の例では、最初にRegisterメソッドを呼び出して依存関係プロパティを登録します。The following example first registers a dependency property by calling the Register method. 依存関係プロパティの名前と特性を格納するために使用する識別子フィールドの名前は、 Name Register呼び出しの一部として、依存関係プロパティに対して選択したで、リテラルProperty文字列によって追加される必要があります。The name of the identifier field that you use to store the name and characteristics of the dependency property must be the Name you chose for the dependency property as part of the Register call, appended by the literal string Property. たとえば、 NameLocationを使用して依存関係プロパティを登録する場合、依存関係プロパティに定義する識別子フィールドの名前LocationPropertyはにする必要があります。For instance, if you register a dependency property with a Name of Location, then the identifier field that you define for the dependency property must be named LocationProperty.

この例でStateは、依存関係プロパティとその CLR アクセサーの名前はです。識別子フィールドはStatePropertyです。プロパティの型はBooleanで、依存関係プロパティMyStateControlを登録する型はです。In this example, the name of the dependency property and its CLR accessor is State; the identifier field is StateProperty; the type of the property is Boolean; and the type that registers the dependency property is MyStateControl.

このパターンに従って名前が付けられていない場合は、定義したプロパティがデザイナーから正しく報告されず、プロパティ システムのスタイル適用の一部が予期したとおりに動作しなくなる可能性があります。If you fail to follow this naming pattern, designers might not report your property correctly, and certain aspects of property system style application might not behave as expected.

依存関係プロパティの既定のメタデータを指定することもできます。You can also specify default metadata for a dependency property. State 依存関係プロパティの既定値を false として登録する例を次に示します。This example registers the default value of the State dependency property to be 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 プロパティをバックアップするだけではなく、依存関係プロパティを実装する方法と理由の詳細については、「依存関係プロパティの概要」を参照してください。For more information about how and why to implement a dependency property, as opposed to just backing a CLR property with a private field, see Dependency Properties Overview.

関連項目See also