Procedura: Registrare una proprietà associata

Questo esempio mostra come registrare una proprietà associata e fornire funzioni di accesso pubbliche in modo da poter usare la proprietà sia in XAML che nel codice. Le proprietà associate sono un concetto di sintassi definito da XAML. La maggior parte delle proprietà associate per i tipi WPF viene implementata anche come proprietà di dipendenza. È possibile usare le proprietà di dipendenza in qualsiasi DependencyObject tipo.

Esempio

Nell'esempio seguente viene illustrato come registrare una proprietà associata come proprietà di dipendenza usando il RegisterAttached metodo . La classe del provider può fornire metadati predefiniti per la proprietà applicabile quando la proprietà viene usata in un'altra classe, a meno che tale classe non esegua l'override dei metadati. In questo esempio il valore predefinito della proprietà IsBubbleSource viene impostato su false.

La classe del provider per una proprietà associata (anche se non è registrata come proprietà di dipendenza) deve fornire funzioni di accesso get e set statiche basate sulla convenzione di denominazione Set[NomeProprietàAssociata] e Get[NomeProprietàAssociata]. Queste funzioni di accesso sono necessarie in modo che il lettore XAML che agisce possa riconoscere la proprietà come attributo in XAML e risolvere i tipi appropriati.

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

Vedi anche