Freigeben über


Anleitung zum Registrieren einer angefügten Eigenschaft

In diesem Beispiel wird gezeigt, wie Sie eine angefügte Eigenschaft registrieren und öffentliche Accessoren bereitstellen, damit Sie die Eigenschaft sowohl in XAML als auch im Code verwenden können. Angefügte Eigenschaften sind ein syntaxkonzept, das von XAML definiert wird. Die meisten angefügten Eigenschaften für WPF-Typen werden auch als Abhängigkeitseigenschaften implementiert. Sie können Abhängigkeitseigenschaften für alle DependencyObject Typen verwenden.

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, Standardmetadaten für die Eigenschaft bereitzustellen, die bei Verwendung der Eigenschaft für eine andere Klasse gilt, es sei denn, diese Klasse überschreibt die Metadaten. In diesem Beispiel wird der Standardwert der eigenschaft IsBubbleSource auf falsefestgelegt.

Die Anbieterklasse einer angefügten Eigenschaft (auch wenn sie nicht als Abhängigkeitseigenschaft registriert ist) muss statische Get- und Set-Accessoren bereitstellen, die der Benennungskonvention folgen, Set[AttachedPropertyName] und Get[AttachedPropertyName]. Diese Accessoren sind erforderlich, damit der handelnde XAML-Reader die Eigenschaft als Attribut in XAML erkennen und die entsprechenden Typen auflösen kann.

public static readonly DependencyProperty IsBubbleSourceProperty = DependencyProperty.RegisterAttached(
  "IsBubbleSource",
  typeof(Boolean),
  typeof(AquariumObject),
  new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)
);
public static void SetIsBubbleSource(UIElement element, Boolean value)
{
  element.SetValue(IsBubbleSourceProperty, value);
}
public static Boolean GetIsBubbleSource(UIElement element)
{
  return (Boolean)element.GetValue(IsBubbleSourceProperty);
}
Public Shared ReadOnly IsBubbleSourceProperty As DependencyProperty = DependencyProperty.RegisterAttached("IsBubbleSource", GetType(Boolean), GetType(AquariumObject), New FrameworkPropertyMetadata(False, FrameworkPropertyMetadataOptions.AffectsRender))
Public Shared Sub SetIsBubbleSource(ByVal element As UIElement, ByVal value As Boolean)
    element.SetValue(IsBubbleSourceProperty, value)
End Sub
Public Shared Function GetIsBubbleSource(ByVal element As UIElement) As Boolean
    Return CType(element.GetValue(IsBubbleSourceProperty), Boolean)
End Function

Siehe auch