Procedura: Implementare una proprietà di dipendenza
In questo esempio viene illustrato come eseguire il backup di una proprietà CLR (Common Language Runtime) con un DependencyProperty campo, definendo così una proprietà di dipendenza. Quando definisci le tue proprietà e vuoi che supportino molti aspetti della funzionalità di Windows Presentation Foundation (WPF), tra cui stili, data binding, ereditarietà, animazione e valori predefiniti, devi implementarli come proprietà di dipendenza.
Esempio
Nell'esempio seguente viene prima registrata una proprietà di dipendenza chiamando il Register metodo . Il nome del campo dell'identificatore usato per archiviare il nome e le caratteristiche della proprietà di dipendenza deve essere quello Name scelto per la proprietà di dipendenza come parte della Register chiamata, accodato dalla stringa Property
letterale . Ad esempio, se si registra una proprietà di dipendenza con un Name di Location
, il campo identificatore definito per la proprietà di dipendenza deve essere denominato LocationProperty
.
In questo esempio, il nome della proprietà di dipendenza e la relativa funzione di accesso CLR è State
, il campo identificatore è StateProperty
, il tipo della proprietà è Booleane il tipo che registra la proprietà di dipendenza è MyStateControl
.
Se non si riesce a seguire questo criterio di denominazione, la proprietà potrebbe non essere segnalata correttamente nelle finestre di progettazione e alcuni aspetti dell'applicazione di stili del sistema di proprietà potrebbero non funzionare come previsto.
È anche possibile specificare metadati predefiniti per una proprietà di dipendenza. In questo esempio viene registrato il valore predefinito della proprietà di dipendenza State
in modo che sia 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
Per altre informazioni su come e perché implementare una proprietà di dipendenza, anziché eseguire il backup di una proprietà CLR con un campo privato, vedere Cenni preliminari sulle proprietà di dipendenza.
Vedi anche
.NET Desktop feedback