Condividi tramite


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 Propertyletterale . 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