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 festlegen möchten, die Sie definieren, um diese Features zu unterstützen, implementieren Sie Ihre Eigenschaften als Abhängigkeitseigenschaft.
Beispiel
Im folgenden Beispiel wird zunächst eine Abhängigkeitseigenschaft registriert, indem die Register-Methode aufgerufen wird. Die Methode gibt eine Register
Instanz zurück, die DependencyProperty 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 benannt LocationProperty
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 NameHasFish
der Abhängigkeitseigenschaft und dessen CLR-Accessor, so dass das Bezeichnerfeld benannt HasFishProperty
wird. Der Abhängigkeitseigenschaftstyp ist Boolean und der Besitzertyp, der die Abhängigkeitseigenschaft registriert, ist Aquarium
.
Sie können die standardmäßigen Metadaten für eine Abhängigkeitseigenschaft angeben. In diesem Beispiel wird ein Standardwert 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