Registrieren einer angefügten Eigenschaft (WPF .NET)
In diesem Artikel wird beschrieben, wie Sie eine angefügte Eigenschaft registrieren und öffentliche Accessoren bereitstellen, mit denen Sie über XAML (Extensible Application Markup Language) und Code auf die angefügte Eigenschaft zugreifen können. Angefügte Eigenschaften ermöglichen das Festlegen zusätzlicher Eigenschafts-/Wertpaare für ein beliebiges XAML-Element, obwohl das Element diese zusätzlichen Eigenschaften nicht im Objektmodell definiert. Auf die zusätzlichen Eigenschaften kann global zugegriffen werden. Angefügte Eigenschaften werden in der Regel als spezielle Form von Abhängigkeitseigenschaft definiert, die nicht über einen herkömmlichen Eigenschaftenwrapper verfügt. Die meisten angefügten Eigenschaften für Windows Presentation Foundation (WPF)-Typen werden auch als Abhängigkeitseigenschaften implementiert. Sie können Abhängigkeitseigenschaften für jeden DependencyObject abgeleiteten Typ erstellen.
Beispiel
Das folgende Beispiel zeigt, wie Sie eine angefügte Eigenschaft mithilfe der RegisterAttached-Methode als Abhängigkeitseigenschaft registrieren. Die Anbieterklasse hat die Möglichkeit, einen Standardwert in Eigenschaftenmetadaten anzugeben. Weitere Informationen zu den Metadaten von Eigenschaften finden Sie unter Metadaten der Abhängigkeitseigenschaft. In diesem Beispiel weist die eigenschaft HasFish
einen Boolean Werttyp auf, wobei der Standardwert auf false
festgelegt ist.
Die Anbieterklasse für eine angefügte Eigenschaft muss statische Get/Set-Accessormethoden bereitstellen, die der Benennungskonvention Get<property name>
und Set<property name>
folgen. Der XAML-Reader verwendet die Accessoren, um das XAML-Attribut für die angefügte Eigenschaft zu erkennen und den Wert in den entsprechenden Typ aufzulösen. Diese Accessoren sind auch dann erforderlich, wenn eine angefügte Eigenschaft nicht als Abhängigkeitseigenschaft registriert ist.
public class Aquarium : UIElement
{
// Register an attached dependency property with the specified
// property name, property type, owner type, and property metadata.
public static readonly DependencyProperty HasFishProperty =
DependencyProperty.RegisterAttached(
"HasFish",
typeof(bool),
typeof(Aquarium),
new FrameworkPropertyMetadata(defaultValue: false,
flags: FrameworkPropertyMetadataOptions.AffectsRender)
);
// Declare a get accessor method.
public static bool GetHasFish(UIElement target) =>
(bool)target.GetValue(HasFishProperty);
// Declare a set accessor method.
public static void SetHasFish(UIElement target, bool value) =>
target.SetValue(HasFishProperty, value);
}
Public Class Aquarium
Inherits UIElement
' Register an attached dependency property with the specified
' property name, property type, owner type, and property metadata.
Public Shared ReadOnly HasFishProperty As DependencyProperty =
DependencyProperty.RegisterAttached("HasFish", GetType(Boolean), GetType(Aquarium),
New FrameworkPropertyMetadata(defaultValue:=False,
flags:=FrameworkPropertyMetadataOptions.AffectsRender))
' Declare a get accessor method.
Public Shared Function GetHasFish(target As UIElement) As Boolean
Return target.GetValue(HasFishProperty)
End Function
' Declare a set accessor method.
Public Shared Sub SetHasFish(target As UIElement, value As Boolean)
target.SetValue(HasFishProperty, value)
End Sub
End Class
Siehe auch
- DependencyProperty
- Übersicht über angefügte Eigenschaften
- Übersicht über Abhängigkeitseigenschaften
- Benutzerdefinierte Abhängigkeitseigenschaften
- Themen mit Anleitungen
.NET Desktop feedback