Udostępnij za pośrednictwem


Jak zarejestrować dołączoną właściwość

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. Właściwości zależności można używać na dowolnych DependencyObject typach.

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 RegisterAttached metody . 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ść IsBubbleSource domyślna właściwości jest ustawiona na falsewartość .

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 metody pobierania i ustawiania metod dostępu, które są zgodne z konwencją Setnazewnictwa [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ż