Compartir a través de


Cómo implementar una propiedad de dependencia

En este artículo se describe cómo implementar una propiedad de dependencia mediante un DependencyProperty campo para realizar una copia de seguridad de una propiedad de Common Language Runtime (CLR). Las propiedades de dependencia admiten varias características avanzadas del sistema de propiedades de Windows Presentation Foundation (WPF). Estas características incluyen estilos, enlaces de datos, herencia, animación y valores predeterminados. Si desea que las propiedades que defina sean compatibles con esas características, implemente las propiedades como una propiedad de dependencia.

Ejemplo

En el ejemplo siguiente se muestra cómo registrar una propiedad de dependencia mediante una llamada al Register método . El Register método devuelve una DependencyProperty instancia denominada identificador de propiedad de dependencia. El identificador se almacena en un static readonly campo y contiene el nombre y las características de una propiedad de dependencia.

El campo de identificador debe seguir la convención <property name>Propertyde nomenclatura . Por ejemplo, si registra una propiedad de dependencia con el nombre Location, el campo de identificador debe denominarse LocationProperty. Si no sigue este patrón de nomenclatura, es posible que los diseñadores de WPF no notifiquen correctamente la propiedad y es posible que los aspectos de la aplicación de estilo de sistema de propiedades no se comporten según lo previsto.

En el ejemplo siguiente, el nombre de la propiedad de dependencia y su descriptor de acceso CLR es HasFish, por lo que el campo de identificador se denomina HasFishProperty. El tipo de propiedad de dependencia es Boolean y el tipo de propietario que registra la propiedad de dependencia es Aquarium.

Puede especificar metadatos predeterminados para una propiedad de dependencia. En este ejemplo se establece un valor predeterminado de false para la HasFish propiedad de dependencia.

public class Aquarium : DependencyObject
{
    public static readonly DependencyProperty HasFishProperty =
        DependencyProperty.Register(
            name: "HasFish",
            propertyType: typeof(bool),
            ownerType: typeof(Aquarium),
            typeMetadata: new FrameworkPropertyMetadata(defaultValue: false));

    public bool HasFish
    {
        get => (bool)GetValue(HasFishProperty);
        set => SetValue(HasFishProperty, value);
    }
}
Public Class Aquarium
    Inherits DependencyObject

    Public Shared ReadOnly HasFishProperty As DependencyProperty =
    DependencyProperty.Register(
        name:="HasFish",
        propertyType:=GetType(Boolean),
        ownerType:=GetType(Aquarium),
        typeMetadata:=New FrameworkPropertyMetadata(defaultValue:=False))

    Public Property HasFish As Boolean
        Get
            Return GetValue(HasFishProperty)
        End Get
        Set(value As Boolean)
            SetValue(HasFishProperty, value)
        End Set
    End Property

End Class

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

Consulte también