Freigeben über


Gewusst wie: Implementieren einer Abhängigkeitseigenschaft (WPF .NET)

In diesem Artikel wird beschrieben, wie Sie eine Abhängigkeitseigenschaft mithilfe eines DependencyProperty Felds implementieren, um eine gemeinsame Sprach-Runtime (CLR)-Eigenschaft zu sichern. Abhängigkeitseigenschaften unterstützen mehrere erweiterte Windows Presentation Foundation (WPF)-Eigenschaftssystemfeatures. Diese Features umfassen Formatvorlagen, Datenbindung, Vererbung, Animation und Standardwerte. Wenn Sie eigenschaften benötigen, die Sie definieren, um diese Features zu unterstützen, implementieren Sie Ihre Eigenschaften als Abhängigkeitseigenschaft.

Beispiel

Das folgende Beispiel zeigt, wie Sie eine Abhängigkeitseigenschaft registrieren, indem Sie die Register-Methode aufrufen. Die Register-Methode gibt eine DependencyProperty-Instanz zurück, die als Abhängigkeitseigenschaftsbezeichner bezeichnet wird. Der Bezeichner wird in einem static readonly-Feld gespeichert und enthält den Namen und die Merkmale einer Abhängigkeitseigenschaft.

Das Bezeichnerfeld muss der Benennungskonvention <property name>Propertyfolgen. Wenn Sie beispielsweise eine Abhängigkeitseigenschaft mit dem Namen Locationregistrieren, sollte das Bezeichnerfeld LocationPropertybenannt werden. Wenn Sie sich nicht an dieses Benennungsmuster halten, melden die WPF-Designer Ihre Eigenschaft möglicherweise nicht korrekt, und Aspekte der Anwendung im Stil des Eigenschaftssystems verhalten sich möglicherweise nicht wie erwartet.

Im folgenden Beispiel lautet der Name der Abhängigkeitseigenschaft und dessen CLR-Accessor HasFish, sodass das Bezeichnerfeld HasFishProperty genannt wird. Der Abhängigkeitseigenschaftstyp ist Boolean und der Besitzertyp, der die Abhängigkeitseigenschaft registriert, ist Aquarium.

Sie können die Standard-Metadaten für eine Abhängigkeitseigenschaft angeben. In diesem Beispiel wird ein Standardwert von false für die HasFish Abhängigkeitseigenschaft festgelegt.

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

Weitere Informationen dazu, wie und warum eine Abhängigkeitseigenschaft implementiert wird, anstatt eine CLR-Eigenschaft nur mit einem privaten Feld zu sichern, finden Sie unter Übersicht über Abhängigkeitseigenschaften.

Weitere Informationen