【发布时间】:2015-11-06 01:42:39
【问题描述】:
我有一个带有依赖属性的自定义控件。我知道如果依赖属性是引用类型,我需要在控件的每个实例中初始化它,否则它们都使用相同的对象。在普通控件中,我在构造函数中执行此操作。但是在我的自定义控件中,我在哪里执行此操作? OnApplyTemplate() 方法?
【问题讨论】:
-
你有代码示例吗?
我有一个带有依赖属性的自定义控件。我知道如果依赖属性是引用类型,我需要在控件的每个实例中初始化它,否则它们都使用相同的对象。在普通控件中,我在构造函数中执行此操作。但是在我的自定义控件中,我在哪里执行此操作? OnApplyTemplate() 方法?
【问题讨论】:
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)));
}
}
【讨论】:
您可以为自定义控件同时使用静态构造函数和实例构造函数。在实例构造函数中初始化引用类型依赖属性。
【讨论】: