Sdílet prostřednictvím


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é