Udostępnij za pośrednictwem


Instrukcje: implementowanie właściwości zależności

W tym przykładzie pokazano, jak utworzyć kopię zapasową właściwości środowiska uruchomieniowego języka wspólnego (CLR) z polem DependencyProperty, definiując w ten sposób właściwość zależności. Jeśli zdefiniujesz własne właściwości i chcesz, aby obsługiwały wiele aspektów funkcji programu Windows Presentation Foundation (WPF), w tym stylów, powiązania danych, dziedziczenia, animacji i wartości domyślnych, należy zaimplementować je jako właściwość zależności.

Przykład

Poniższy przykład najpierw rejestruje właściwość zależności, wywołując metodę Register. Nazwa pola identyfikatora używanego do przechowywania nazwy i właściwości właściwości zależności musi być nazwą Name, wybraną dla tej właściwości w ramach wywołania Register, z dołączonym ciągiem znaków Property. Na przykład w przypadku zarejestrowania właściwości zależności za pomocą NameLocationpole identyfikatora zdefiniowane dla właściwości zależności musi mieć nazwę LocationProperty.

W tym przykładzie nazwa właściwości zależności i jej akcesor CLR jest State; pole identyfikatora jest StateProperty; typ właściwości to Boolean; i typ rejestrujący właściwość zależności jest MyStateControl.

Jeśli nie będziesz przestrzegać tego wzorca nazewnictwa, projektanci mogą nie raportować twojej właściwości poprawnie, a niektóre aspekty zastosowania stylu systemu właściwości mogą nie działać zgodnie z oczekiwaniami.

Można również określić domyślne metadane dla właściwości zależności. W tym przykładzie zarejestrowano wartość domyślną właściwości zależności State, która ma być false.

public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); }
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}
Public Class MyStateControl
    Inherits ButtonBase
  Public Sub New()
      MyBase.New()
  End Sub
  Public Property State() As Boolean
    Get
        Return CType(Me.GetValue(StateProperty), Boolean)
    End Get
    Set(ByVal value As Boolean)
        Me.SetValue(StateProperty, value)
    End Set
  End Property
  Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
End Class

Aby uzyskać więcej informacji o tym, w jaki sposób i dlaczego należy zaimplementować właściwość zależności, w przeciwieństwie do oparcia właściwości CLR o pole prywatne, zapoznaj się z Właściwości zależności — omówienie.

Zobacz też