2011-05-01 3 views
3

사용자 정의 컨트롤 인 사용자 지정 WPF 컨트롤을 만듭니다. 이 사용자 지정 컨트롤에는 두 개의 속성 (UnselectedAppearance 및 SelectedAppearance)이 있습니다. 이러한 속성은 모두 DependencyObject에서 파생 된 동일한 유형 (모양)입니다. Appearance 클래스에는 여러 DependencyProperties 자체가 있습니다. 각 Appearance 속성에 대한 기본값을 설정하는 적절한 방법을 알고 싶습니다. 다음과 같은 코드를 시도했지만 디자이너에서 내 사용자 정의 컨트롤을 사용하려고하면 예외가 throw됩니다.DependencyObject에서 파생 된 형식의 DependencyProperty 기본값을 설정하는 방법

public static readonly DependencyProperty UnselectedAppearanceProperty = DependencyProperty.Register("UnselectedAppearance", typeof(Appearance), typeof(FNDie), new PropertyMetadata(new Appearance())); 

내가 할 수있는 방법이 있습니까?

답변

1

호출하는 생성자 (여기에서는 기본 매개 변수없는 매개 변수)의 모든 비 종속성 속성을 초기화해야합니다. 종속성 속성은 사용자가 수행하는 것처럼 기본값을 부여 할 수 있습니다. new PropertyMetadata(new Appearance());

3

종속성 속성의 기본값은 해당 종속성 객체의 모든 인스턴스간에 공유되므로 null이 아닌 값은 일반적으로 값 유형이나 변경 불가능한 클래스에서만 의미가 있습니다 . 즉, 당신은 어려운 방법을 배울 수 있습니다, null은 아마도 가장 좋은 옵션입니다.

종속성 속성에 대해 가변적 인 참조 값을 설정해야하는 경우 기본값을 null로두고 생성자에 설정할 수 있습니다. 그러나 이렇게하면 스타일을 사용하여 해당 속성을 사용할 수 없게되며 필요에 따라 큰 제한이 될 수 있습니다.

+0

예와 예 예처럼 속성 메타 데이터 사용을해야합니다. 임박한 한계 단계에 있고 WPF에서 할 수있는 SetCurrentValue()가없는 Silverlight 5의 참조 유형에 DependencyProperty 기본값을 설정해야합니다. –

2

당신이

class MyValidation 
{ 

    public bool status 
     { 
      get { return (bool)GetValue(statusProperty); } 
      set { SetValue(statusProperty, value); } 
     } 

     public static readonly DependencyProperty statusProperty = 
      DependencyProperty.Register("status", typeof(bool), typeof(MyValidation),new PropertyMetadata(false)); 

} 
관련 문제