如何:实现依赖项属性

更新: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 属性的更多信息,请参见依赖项属性概述

请参见

概念

依赖项属性概述

其他资源

属性帮助主题

属性示例