Implementace vlastnosti závislosti (WPF .NET)
Tento článek popisuje, jak implementovat vlastnost závislosti pomocí pole DependencyProperty, které podporuje vlastnost CLR (Common Language Runtime). Vlastnosti závislostí podporují několik pokročilých funkcí systému vlastností WINDOWS Presentation Foundation (WPF). Mezi tyto funkce patří styly, datové vazby, dědičnost, animace a výchozí hodnoty. Pokud chcete, aby vlastnosti, které definujete, podporovaly tyto funkce, implementujte je jako závislé vlastnosti.
Příklad
Následující příklad ukazuje, jak zaregistrovat vlastnost závislosti voláním Register metoda. Metoda Register
vrátí instanci DependencyProperty nazývanou identifikátor vlastnosti závislosti . Identifikátor je uložen v poli static readonly
a obsahuje název a vlastnosti vlastnosti závislosti.
Pole identifikátoru musí dodržovat zásady vytváření názvů <property name>Property
. Pokud například zaregistrujete vlastnost závislosti s názvem Location
, pole identifikátoru by mělo být pojmenováno LocationProperty
. Pokud se vám nepodaří postupovat podle tohoto vzoru pojmenování, návrháři WPF nemusí správně hlásit vaši vlastnost a aspekty aplikace stylu systému vlastností se nemusí chovat podle očekávání.
V následujícím příkladu je název vlastnosti závislosti a jeho přístupového objektu CLR HasFish
, takže pole identifikátoru je pojmenováno HasFishProperty
. Typ vlastnosti závislosti je Boolean a typ vlastníka, který registruje vlastnost závislosti, je Aquarium
.
Pro vlastnost závislosti můžete zadat výchozí metadata. Tento příklad nastaví výchozí hodnotu false
pro vlastnost závislosti 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
Další informace o tom, jak a proč implementovat závislou vlastnost, místo pouhého ukládání vlastnosti CLR privátním polem, naleznete v části Přehled závislých vlastností.
Viz také
- Přehled vlastností závislostí
- Témata s postupy
.NET Desktop feedback