Share via


Como registrar uma propriedade anexada

Este exemplo mostra como registrar uma propriedade anexada e fornecer acessadores públicos para que você possa usar a propriedade em XAML e código. As propriedades anexadas são um conceito de sintaxe definido por XAML. A maioria das propriedades anexadas para tipos WPF também são implementadas como propriedades de dependência. Você pode usar propriedades de dependência em qualquer DependencyObject tipo.

Exemplo

O exemplo a seguir mostra como registrar uma propriedade anexada como uma propriedade de dependência, usando o RegisterAttached método. A classe de provedor tem a opção de fornecer metadados padrão para a propriedade é aplicável quando a propriedade é usada em outra classe, a menos que essa classe substitua os metadados. Neste exemplo, o valor padrão da propriedade IsBubbleSource está definido como false.

A classe de provedor para uma propriedade anexada (mesmo se não estiver registrada como uma propriedade de dependência) deve fornecer acessadores get e set estáticos que sigam a convenção de nomenclatura Set[AttachedPropertyName] e Get[AttachedPropertyName]. Esses acessadores são necessários para que o leitor XAML em ação possa reconhecer a propriedade como um atributo em XAML e resolver os tipos apropriados.

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

Confira também