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 sono implementate anche come proprietà di dipendenza. È possibile usare le proprietà di dipendenza in qualsiasi tipo di DependencyObject.
Esempio
Nell'esempio seguente viene illustrato come registrare una proprietà associata come proprietà di dipendenza usando il metodo RegisterAttached. La classe provider ha la possibilità di fornire metadati predefiniti per la proprietà applicabile quando la proprietà viene utilizzata in un'altra classe, a meno che tale classe non esegua l'override dei metadati. In questo esempio, il valore predefinito della proprietà IsBubbleSource
è impostato su false
.
La classe provider per una proprietà associata (anche se non è registrata come proprietà di dipendenza) deve fornire metodi di accesso get e set statici seguendo la convenzione di denominazione Set
[AttachedPropertyName] e Get
[AttachedPropertyName]. 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
Vedere anche
.NET Desktop feedback