在哪里初始化自定义控件的引用类型依赖项属性?

时间:2015-11-05 16:45:39

标签: c# wpf

我有一个带依赖项属性的自定义控件。我知道如果依赖属性是引用类型,我需要在控件的每个实例中初始化它,否则它们都使用相同的对象。在普通控件中,我在构造函数中执行此操作。但在我的自定义控件中,我该怎么做? OnApplyTemplate()方法?

2 个答案:

答案 0 :(得分:0)

DependencyProperty可以使用传统方式创建,例如在您声明DependencyProperty的任何类中。在CustomControl中声明依赖属性没有特殊规则。

public class YourCustomControl : Control
{
    public static readonly DependencyProperty TestPropProperty =
        DependencyProperty.Register("TestProp", typeof(string), typeof(TestControl), new UIPropertyMetadata(null));

    public string TestProp
    {
        get { return (string)GetValue(TestPropProperty); }
        set { SetValue(TestPropProperty, value); }
    }

    static YourCustomControl()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(TestControl), new FrameworkPropertyMetadata(typeof(TestControl)));
    }
}

答案 1 :(得分:0)

看起来这是解决方案:http://www.thomasclaudiushuber.com/blog/2010/02/11/be-careful-with-default-values-of-dependency-properties-if-youre-using-reference-types/

您可以为自定义控件同时拥有静态构造函数和实例构造函数。初始化实例构造函数内部的引用类型依赖项属性。