WPF自定义控件的依赖项属性

问题描述:

我对如何设置自定义控件的依赖项属性感到一团糟。WPF自定义控件的依赖项属性

我创建了自定义控件,所以它派生自Control类。

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

为了设置依赖属性,我必须在一个必须从DependencyObject派生的类中注册它。所以它应该是另一个类:

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); } 
    } 
} 

我现在怎么可以设置MyFirst财产依赖属性CustControl?

为了设置依赖属性,我必须在一个必须从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 2009-12-05 08:49:28