다음을 통해 공유


방법: 종속성 속성 구현

이 예제에서는 DependencyProperty 필드로 CLR(공용 언어 런타임) 속성을 백업하여 종속성 속성을 정의하는 방법을 보여 줍니다. 고유 속성을 정의하고 스타일, 데이터 바인딩, 상속, 애니메이션 및 기본값을 포함한 WPF(Windows Presentation Foundation) 기능의 여러 측면을 지원하려면 해당 속성을 종속성 속성으로 구현해야 합니다.

예제

다음 예제에서는 먼저 Register 메서드를 호출하여 종속성 속성을 등록합니다. 종속성 속성의 이름과 특성을 저장하는 데 사용하는 식별자 필드의 이름은 Register 호출의 일부로 종속성 속성에 대해 선택한 Name이어야 하며 리터럴 문자열 Property에 의해 추가되어야 합니다. 예를 들어 LocationName과 함께 종속성 속성을 등록하면 종속성 속성에 대해 정의한 식별자 필드의 이름을 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 속성을 단지 백업하는 것과는 반대로 종속성 속성을 구현하는 방법과 이유에 대한 자세한 내용은 종속성 속성 개요를 참조하세요.

참고 항목