Compartir a través de


Cómo: Registrar una propiedad asociada

En este ejemplo se muestra cómo registrar una propiedad adjunta y se proporcionan descriptores de acceso públicos para que pueda usar la propiedad en XAML y en el código. Las propiedades adjuntas son un concepto de sintaxis que define XAML. La mayoría de propiedades adjuntas para los tipos WPF también se implementan como propiedades de dependencia. Puede usar las propiedades de dependencia en cualquier tipo de DependencyObject.

Ejemplo

En el ejemplo siguiente se muestra cómo registrar una propiedad adjunta como una propiedad de dependencia mediante el método RegisterAttached. La clase de proveedor tiene la opción de proporcionar metadatos predeterminados para la propiedad que se aplica cuando la propiedad se usa en otra clase, a menos que esa clase invalide los metadatos. En este ejemplo, el valor predeterminado de la propiedad IsBubbleSource está establecida en false.

La clase de proveedor para una propiedad adjunta (incluso si no está registrada como una propiedad de dependencia) debe proporcionar descriptores de acceso get y set estáticos que siguen la convención de nomenclatura Set[AttachedPropertyName] y Get[AttachedPropertyName]. Estos descriptores de acceso son necesarios para que el lector de XAML pueda reconocer la propiedad como un atributo en XAML y resolver los tipos pertinentes.

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

Vea también