2009-12-05 4 views
2

사용자 지정 컨트롤에 대한 종속성 속성을 설정하는 방법이 다소 혼란 스럽습니다.사용자 지정 컨트롤에 대한 WPF 종속성 속성

사용자 정의 컨트롤을 만들었으므로 Control 클래스에서 파생되었습니다.

public class CustControl : Control 
    { 
     static CustControl() 
     { 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(CustControl), new FrameworkPropertyMetadata(typeof(CustControl)));  
     }   
    } 

종속성 속성을 설정하려면 DependencyObject에서 파생되어야하는 클래스 내에 등록해야합니다. 그래서 다른 클래스해야한다 :

내가 CustControl에 대한 종속성 속성으로 죠아 속성을 설정할 수있는 방법을 지금
class CustClass : DependencyObject 
{ 
    public readonly static DependencyProperty MyFirstProperty = DependencyProperty.Register("MyFirst", typeof(string), typeof(CustControl), new PropertyMetadata("")); 

    public string MyFirst 
    { 
     get { return (string)GetValue(MyFirstProperty); } 
     set { SetValue(MyFirstProperty, value); } 
    } 
} 

?

답변

4

Dependency 속성을 설정하려면 DependencyObject에서 파생되어야하는 클래스 내에 등록해야합니다. 따라서 다른 클래스 여야합니다.

아니요, 아니야합니다. Control은 이미 DependencyObject에서 파생됩니다. 상속이 transitive이므로 CustControl의 하위 유형은 DependencyObject입니다. 모든 것을 넣으십시오. CustControl :

public class CustControl : Control 
{ 
     static CustControl() 
     { 
      DefaultStyleKeyProperty.OverrideMetadata(typeof(CustControl), new FrameworkPropertyMetadata(typeof(CustControl)));  
     }   

    public readonly static DependencyProperty MyFirstProperty = DependencyProperty.Register("MyFirst", typeof(string), typeof(CustControl), new PropertyMetadata("")); 

    public string MyFirst 
    { 
     get { return (string)GetValue(MyFirstProperty); } 
     set { SetValue(MyFirstProperty, value); } 
    } 
} 
+0

예, 작동합니다. 고마워요! – rem

관련 문제