如何:实现依赖项属性
更新:2007 年 11 月
本示例演示如何使用 DependencyProperty 字段来支持公共语言运行时 (CLR) 属性,从而定义一个依赖项属性。当您定义自己的属性并需要它们支持 Windows Presentation Foundation (WPF) 功能的诸多方面(包括样式、数据绑定、继承、动画和默认值)时,应将其实现为依赖项属性。
示例
以下示例首先通过调用 Register 方法来注册一个依赖项属性。用于存储依赖项属性的名称和特征的标识符字段的名称必须是作为 Register 调用的一部分为依赖项属性选择的 Name,并追加字符串 Property。例如,如果使用 Location 的 Name 注册一个依赖项属性,则为依赖项属性定义的标识符字段必须名为 LocationProperty。
在此示例中,依赖项属性的名称及其 CLR 访问器均为 State;标识符字段为 StateProperty;属性的类型为 Boolean;注册依赖项属性的类型为 MyStateControl。
如果不遵循此命名模式,则设计器可能无法正确地报告您的属性,而且属性系统样式应用程序的某些方面可能不会以预期的方式工作。
还可以为依赖项属性属性指定默认元数据。此示例将 State 依赖项属性的默认值注册为 false。
public class MyStateControl : ButtonBase
{
public MyStateControl() : base() { }
public Boolean State
{
get { return (Boolean)this.GetValue(StateProperty); }
set { this.SetValue(StateProperty, value); }
}
public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
"State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}
有关完整示例,请参见 具有依赖项属性的自定义类的示例。
有关如何以及为何实现一个依赖项属性,而非仅使用私有字段支持 CLR 属性的更多信息,请参见依赖项属性概述。