Gewusst wie: Registrieren einer angefügten Eigenschaft

In diesem Beispiel wird das Registrieren einer angefügten Eigenschaft und das Bereitstellen öffentlicher Zugriffsmethoden beschrieben, damit Sie die Eigenschaft jeweils in XAML und im Code verwenden können. Angefügte Eigenschaften sind ein von XAML definiertes Syntaxkonzept. 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 eine angefügte Eigenschaft mithilfe der RegisterAttached-Methode als Abhängigkeitseigenschaft registriert wird. Die Providerklasse hat die Möglichkeit zur Bereitstellung von Standardmetadaten für die Eigenschaft, die angewendet wird, wenn die Eigenschaft in einer anderen Klasse verwendet wird, es sei denn, diese Klasse überschreibt die Metadaten. In diesem Beispiel wird der Standardwert der IsBubbleSource-Eigenschaft auf false festgelegt.

Die Anbieterklasse für eine angefügte Eigenschaft (auch wenn diese nicht als Abhängigkeitseigenschaft registriert ist) muss statische get- und set-Accessoren bereitstellen, die die Benennungskonvention Set[NameDerAngefügtenEigenschaft] und Get[NameDerAngefügtenEigenschaft] befolgen. Diese Accessoren sind erforderlich, damit der agierende Leser von XAML 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

Weitere Informationen