Come implementare una proprietà di dipendenza (WPF .NET)
Questo articolo descrive come implementare una proprietà di dipendenza usando un campo per eseguire il DependencyProperty backup di una proprietà CLR (Common Language Runtime). Le proprietà di dipendenza supportano diverse funzionalità avanzate del sistema di proprietà 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 Register metodo . Il Register
metodo restituisce un'istanza DependencyProperty denominata identificatore di proprietà di dipendenza. L'identificatore viene archiviato in un static readonly
campo e contiene il nome e le caratteristiche di una proprietà di dipendenza.
Il campo identificatore deve seguire la convenzione <property name>Property
di denominazione . 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, le finestre di progettazione WPF potrebbero non segnalare correttamente la proprietà e gli aspetti dell'applicazione di stile del sistema di proprietà potrebbero non comportarsi come previsto.
Nell'esempio seguente il nome della proprietà di dipendenza e la relativa funzione di accesso CLR è HasFish
, quindi 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 i metadati predefiniti per una proprietà di dipendenza. In questo esempio viene impostato un valore predefinito di false
per la HasFish
proprietà di dipendenza.
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.
Vedi anche
.NET Desktop feedback