방법: 종속성 속성의 소유자 형식 추가
이 예제에서는 다른 형식에 대해 등록된 종속성 속성의 소유자로 클래스를 추가하는 방법을 보여 줍니다. 이렇게 하면 WPF XAML 판독기 및 속성 시스템은 모두 해당 클래스를 속성의 추가 소유자로 인식할 수 있습니다. 필요에 따라 소유자로 추가하면 클래스를 추가하여 형식별 메타데이터를 제공할 수 있습니다.
다음 예제에서 StateProperty
는 MyStateControl
클래스가 등록한 속성입니다. 클래스 UnrelatedStateControl
은 AddOwner 메서드를 사용하여, 특히 종속성 속성에 대한 새 메타데이터를 추가 형식에 있는 대로 허용하는 서명을 사용하여 StateProperty
의 소유자로 자신을 추가합니다. 종속성 속성 구현 예제와 유사한 속성에 대한 CLR(공용 언어 런타임) 접근자를 제공하고 소유자로 추가되는 클래스에 종속성 속성 식별자를 다시 노출해야 합니다.
래퍼가 없으면 종속성 속성은 GetValue 또는 SetValue를 사용하여 프로그래매틱 액세스의 관점에서 작동합니다. 그러나 일반적으로 CLR 속성 래퍼를 사용하여 이 속성 시스템 동작을 병렬 처리하려고 합니다. 래퍼를 사용하면 종속성 속성을 프로그래밍 방식으로 더 쉽게 설정하고 속성을 XAML 특성으로 설정할 수 있습니다.
기본 메타데이터를 재정의하는 방법을 알아보려면 종속성 속성의 메타데이터 재정의를 참조하세요.
예제
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
public class UnrelatedStateControl : Control
{
public UnrelatedStateControl() { }
public static readonly DependencyProperty StateProperty = MyStateControl.StateProperty.AddOwner(typeof(UnrelatedStateControl), new PropertyMetadata(true));
public Boolean State
{
get { return (Boolean)this.GetValue(StateProperty); }
set { this.SetValue(StateProperty, value); }
}
}
Public Class UnrelatedStateControl
Inherits Control
Public Sub New()
End Sub
Public Shared ReadOnly StateProperty As DependencyProperty = MyStateControl.StateProperty.AddOwner(GetType(UnrelatedStateControl), New PropertyMetadata(True))
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
End Class
참고 항목
.NET Desktop feedback
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기