Share via


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.

Důležité

Dokumentace k desktopové příručce pro .NET 7 a .NET 6 se právě připravuje.

Příklad

Následující příklad ukazuje, jak zaregistrovat vlastnost závislosti voláním Register metody. Metoda Register vrátí instanci nazvanou DependencyPropertyidentifiká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>Propertypojmenová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 HasFishCLR , 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é