Procedura: implementare una proprietà di dipendenza
In questo esempio viene mostrato come supportare una proprietà common language runtime (CLR) con un campo DependencyProperty, definendo una proprietà di dipendenza. Quando si definiscono proprietà personalizzate e si desidera che queste supportino numerosi aspetti della funzionalità Windows Presentation Foundation (WPF), inclusi stili, associazione dati, ereditarietà, animazione e valori predefiniti, è necessario implementarle come proprietà di dipendenza.
Esempio
Nell'esempio seguente viene innanzitutto registrata una proprietà di dipendenza chiamando il metodo Register. Il nome del campo dell'identificatore utilizzato per memorizzare il nome e le caratteristiche della proprietà di dipendenza deve essere l'oggetto Name scelto per la proprietà di dipendenza come parte della chiamata Register, aggiunta dalla stringa letterale Property. Ad esempio, se si registra una proprietà di dipendenza con una proprietà Name di Location, il campo dell'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 dell'identificatore è StateProperty; il tipo della proprietà è Boolean e il tipo che registra la proprietà di dipendenza è MyStateControl.
Se non si riesce a seguire questo modello 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 nel modo previsto.
Inoltre, è possibile specificare i metadati predefiniti per una proprietà di dipendenza. In questo esempio viene registrato il valore predefinito della State proprietà di dipendenza affinché sia 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
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));
}
Per ulteriori informazioni sulla modalità e sui motivi dell'implementazione di una proprietà di dipendenza, in contrapposizione al semplice supporto di una proprietà CLR con un campo privato, vedere Cenni preliminari sulle proprietà di dipendenza.
Vedere anche
Concetti
Cenni preliminari sulle proprietà di dipendenza