如何:实现依赖项属性

本示例演示如何使用 DependencyProperty 字段来支持common language runtime (CLR) 属性,从而定义一个依赖项属性。 当您定义自己的属性并需要它们支持 Windows Presentation Foundation (WPF) 功能的诸多方面(包括样式、数据绑定、继承、动画和默认值)时,应将其实现为依赖项属性。

示例

以下示例首先通过调用 Register 方法来注册一个依赖项属性。 用于存储依赖项属性的名称和特征的标识符字段的名称必须是作为 Register 调用的一部分为依赖项属性选择的 Name,并追加字符串 Property。 例如,如果使用 Location 的 Name 注册一个依赖项属性,则为依赖项属性定义的标识符字段必须名为 LocationProperty。

在此示例中,依赖项属性的名称及其 CLR 访问器均为 State;标识符字段为 StateProperty;属性的类型为 Boolean;注册依赖项属性的类型为 MyStateControl。

如果不遵循此命名模式,则设计器可能无法正确地报告您的属性,而且属性系统样式应用程序的某些方面可能不会以预期的方式工作。

还可以为依赖项属性属性指定默认元数据。 此示例将 State 依赖项属性的默认值注册为 false。

  Public Class MyStateControl
      Inherits ButtonBase
    Public Sub New()
        MyBase.New()
    End Sub
    Public Property State() As Boolean
      Get
          Return CType(Me.GetValue(StateProperty), Boolean)
      End Get
      Set(ByVal value As Boolean)
          Me.SetValue(StateProperty, value)
      End Set
    End Property
    Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
  End Class
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 属性的更多信息,请参见依赖项属性概述

请参见

概念

依赖项属性概述

其他资源

属性帮助主题