Come implementare una proprietà di dipendenza (WPF .NET)
Questo articolo descrive come implementare una proprietà di dipendenza usando un campo DependencyProperty per eseguire il backup di una proprietà CLR (Common Language Runtime). Le proprietà di dipendenza supportano diverse funzionalità avanzate del sistema delle proprietà di Windows Presentation Foundation (WPF). Queste funzionalità includono stili, data binding, ereditarietà, animazione e valori predefiniti. Se si desidera che le proprietà definite supportino tali funzionalità, implementare le proprietà come proprietà di dipendenza.
Esempio
Nell'esempio seguente viene illustrato come registrare una proprietà di dipendenza chiamando il metodo Register. Il metodo Register
restituisce un'istanza di DependencyProperty denominata identificatore della proprietà di dipendenza . L'identificatore viene archiviato in un campo static readonly
e contiene il nome e le caratteristiche di una proprietà di dipendenza.
Il campo identificatore deve seguire la convenzione di nomenclatura <property name>Property
. Ad esempio, se si registra una proprietà di dipendenza con il nome Location
, il campo dell'identificatore deve essere denominato LocationProperty
. Se non si segue questo modello di denominazione, i designer WPF potrebbero non segnalare correttamente la proprietà e alcuni aspetti dell'applicazione dello stile del sistema di proprietà potrebbero non comportarsi come previsto.
Nell'esempio seguente, il nome della proprietà di dipendenza e il relativo accessor CLR è HasFish
, di conseguenza il campo dell'identificatore è denominato HasFishProperty
. Il tipo di proprietà di dipendenza è Boolean e il tipo di proprietario che registra la proprietà di dipendenza è Aquarium
.
È possibile specificare metadati predefiniti per una proprietà di dipendenza. In questo esempio viene impostato un valore predefinito di false
per la proprietà di dipendenza 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
Per altre informazioni su come e perché implementare una proprietà di dipendenza, invece di eseguire il backup di una proprietà CLR con un campo privato, vedere panoramica delle proprietà di dipendenza .
Vedere anche
.NET Desktop feedback