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>Property
folgen. Wenn Sie beispielsweise eine Abhängigkeitseigenschaft mit dem Namen Location
registrieren, sollte das Bezeichnerfeld LocationProperty
benannt 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
.NET Desktop feedback