Jak implementować właściwość 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 zależności musi być Name wybrana dla właściwości zależności w ramach Register wywołania, dołączana przez ciąg Property
literału . Jeśli na przykład zarejestrujesz właściwość zależności za pomocą NameLocation
klasy , to pole 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 metody dostępu CLR to State
; pole identyfikatora to StateProperty
; typ właściwości to Boolean; a typ rejestrujący właściwość zależności to MyStateControl
.
Jeśli nie będziesz przestrzegać tego wzorca nazewnictwa, projektanci mogą nie zgłaszać właściwości poprawnie, a niektóre aspekty aplikacji stylu systemu właściwości mogą nie zachowywać się zgodnie z oczekiwaniami.
Można również określić domyślne metadane dla właściwości zależności. W tym przykładzie jest rejestrowana wartość State
domyślna właściwości dependency o wartości 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 na temat sposobu i dlaczego zaimplementować właściwość zależności, w przeciwieństwie do tworzenia kopii zapasowej właściwości CLR z polem prywatnym, zobacz Właściwości zależności — omówienie.
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla