Compartir a través de


Cómo: Implementar una propiedad de dependencia

En este ejemplo se muestra cómo respaldar una propiedad common language runtime (CLR) con un campo DependencyProperty, para definir así una propiedad de dependencia. Si define sus propias propiedades y desea que admitan numerosos 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 propiedades de dependencia.

Ejemplo

En el ejemplo siguiente se registra en primer lugar una propiedad de dependencia llamando al método Register. El nombre del campo identificador que se utiliza para almacenar el nombre y las características de la propiedad de dependencia debe ser el valor de Name que eligió para la propiedad de dependencia como la parte de la llamada al método Register, con la cadena literal Property anexada a dicho valor. Por ejemplo, si registra una propiedad de dependencia cuyo valor de Name es Location, el campo identificador que defina para la propiedad de dependencia deberá 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 la propiedad es Boolean; y el tipo que registra la propiedad de dependencia es MyStateControl.

Si no sigue este modelo de nombres, puede que los diseñadores no informen correctamente sobre la propiedad y es posible que algunos aspectos de la aplicación de estilos del sistema a las propiedades no se comporten como cabría esperar.

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

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

Vea también

Conceptos

Información general sobre las propiedades de dependencia

Otros recursos

Temas "Cómo..." sobre propiedades