Share via


Cómo: Implementar una propiedad de dependencia

Este ejemplo muestra cómo respaldar una propiedad Common Language Runtime (CLR) con un campo DependencyProperty, definiendo así una propiedad de dependencia. Si define sus propias propiedades y quiere que admitan muchos aspectos de la funcionalidad de Windows Presentation Foundation (WPF), incluidos los estilos, el enlace de datos, la herencia, la animación y los valores predeterminados, debe implementarlas como una propiedad de dependencia.

Ejemplo

El siguiente ejemplo registra primero una propiedad de dependencia llamando al método Register. El nombre del campo de identificador que use para almacenar el nombre y las características de la propiedad de dependencia debe ser la propiedad Name que eligió para la propiedad de dependencia como parte de la llamada a Register, seguido de la cadena literal Property. Por ejemplo, si registra una propiedad de dependencia con una propiedad Name de Location, el campo de identificador que defina para la propiedad de dependencia debe denominarse LocationProperty.

En este ejemplo, el nombre de la propiedad de dependencia y su descriptor de acceso CLR es State, el campo de identificador es StateProperty, el tipo de propiedad es Boolean y el tipo que registra la propiedad de dependencia es MyStateControl.

Si no sigue este patrón de nomenclatura, es posible que los diseñadores no puedan notificar la propiedad correctamente y que ciertos aspectos de la aplicación de estilos del sistema de propiedades no funcionen según lo previsto.

También puede especificar los metadatos predeterminados de una propiedad de dependencia. En este ejemplo se registra el valor predeterminado de la propiedad de dependencia State para que sea 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));
}
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

Para obtener más información acerca de cómo y por qué se debe implementar una propiedad de dependencia, en lugar de respaldar simplemente una propiedad CLR con un campo privado, consulte Información general sobre las propiedades de dependencia.

Vea también