Share via


방법: 종속성 속성의 소유자 형식 추가

업데이트: 2007년 11월

이 예제에서는 다른 형식에 등록된 종속성 속성의 소유자로 클래스를 추가하는 방법을 보여 줍니다. 이렇게 하면 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 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); }
  }
}

참고 항목

개념

사용자 지정 종속성 속성

종속성 속성 개요