Implementace vlastnosti závislosti (WPF .NET)
Tento článek popisuje, jak implementovat vlastnost závislosti pomocí DependencyProperty pole pro vrácení vlastnosti 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 pro podporu těchto funkcí, implementujte vlastnosti jako vlastnost závislosti.
Příklad
Následující příklad ukazuje, jak zaregistrovat vlastnost závislosti voláním Register metody. Metoda Register
vrátí instanci nazvanou DependencyProperty identifikátor vlastnosti závislosti. Identifikátor je uložen v static readonly
poli a obsahuje název a vlastnosti vlastnosti závislosti.
Pole identifikátoru musí odpovídat konvenci <property name>Property
pojmenování . 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 HasFish
CLR , 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
vlastnosti HasFish
závislosti.
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 vlastnost závislosti, a nikoli pouze zálohování vlastnosti CLR s privátním polem, naleznete v tématu Přehled vlastností závislostí.
Viz také
.NET Desktop feedback