Instrukcje: rejestrowanie dołączonej właściwości
W tym przykładzie pokazano, jak zarejestrować dołączoną właściwość i udostępnić publiczne metody dostępu, aby można było używać właściwości zarówno w języku XAML, jak i kodzie. Dołączone właściwości to koncepcja składni zdefiniowana przez język XAML. Większość dołączonych właściwości typów WPF jest również implementowana jako właściwości zależności. Możesz używać właściwości zależności w dowolnych typach DependencyObject.
Przykład
W poniższym przykładzie pokazano, jak zarejestrować dołączoną właściwość jako właściwość zależności przy użyciu metody RegisterAttached. Klasa dostawcy ma możliwość podania domyślnych metadanych dla właściwości, która ma zastosowanie, gdy właściwość jest używana w innej klasie, chyba że ta klasa zastępuje metadane. W tym przykładzie wartość domyślna właściwości IsBubbleSource
jest ustawiona na wartość false
.
Klasa dostawcy dla dołączonej właściwości (nawet jeśli nie jest zarejestrowana jako właściwość zależności) musi zapewnić statyczne akcesory dostępu do odczytu i zapisu, które są zgodne z konwencją nazewnictwa Set
[AttachedPropertyName] i Get
[AttachedPropertyName]. Te metody dostępu są wymagane, aby działający czytnik XAML mógł rozpoznać właściwość jako atrybut w języku XAML i rozpoznać odpowiednie typy.
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
Zobacz też
.NET Desktop feedback