Cómo implementar una propiedad de dependencia (WPF .NET)
En este artículo se describe cómo implementar una propiedad de dependencia mediante un campo DependencyProperty 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, enlace de datos, herencia, animación y valores predeterminados. Si desea que las propiedades que defina admitan 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 método Register. El método Register
devuelve una instancia DependencyProperty denominada un identificador de propiedad. El identificador se almacena en un campo static readonly
y contiene el nombre y las características de una propiedad de dependencia.
El campo identificador debe seguir la convención de nomenclatura <property name>Property
. 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 informen correctamente de la propiedad y que algunos aspectos de la aplicación de estilo del 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 propiedad de dependencia HasFish
.
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, hacer una copia de seguridad de una propiedad CLR con un campo privado, consulte Información general sobre las propiedades de dependencia.
Vea también
.NET Desktop feedback