방법: 종속성 속성 구현
이 예제에서는 DependencyProperty 필드로 CLR(공용 언어 런타임) 속성을 백업하여 종속성 속성을 정의하는 방법을 보여 줍니다. 고유 속성을 정의하고 스타일, 데이터 바인딩, 상속, 애니메이션 및 기본값을 포함한 WPF(Windows Presentation Foundation) 기능의 여러 측면을 지원하려면 해당 속성을 종속성 속성으로 구현해야 합니다.
예제
다음 예제에서는 먼저 Register 메서드를 호출하여 종속성 속성을 등록합니다. 종속성 속성의 이름과 특성을 저장하는 데 사용하는 식별자 필드의 이름은 Register 호출의 일부로 종속성 속성에 대해 선택한 Name이어야 하며 리터럴 문자열 Property
에 의해 추가되어야 합니다. 예를 들어 Location
의 Name과 함께 종속성 속성을 등록하면 종속성 속성에 대해 정의한 식별자 필드의 이름을 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