Sdílet prostřednictvím


Postupy: Implementace vlastnosti závislosti

Tento příklad ukazuje, jak zálohovat vlastnost CLR (Common Language Runtime) s polem DependencyProperty , čímž definuje vlastnost závislosti. Když definujete vlastní vlastnosti a chcete, aby podporovaly mnoho aspektů funkcí WPF (Windows Presentation Foundation), včetně stylů, datových vazeb, dědičnosti, animace a výchozích hodnot, měli byste je implementovat jako vlastnost závislosti.

Příklad

Následující příklad nejprve zaregistruje vlastnost závislosti voláním Register metody. Název pole identifikátoru, které používáte k uložení názvu a vlastností vlastnosti závislosti, musí být Name zvolen pro vlastnost závislosti jako součást Register volání, připojena literálem řetězec Property. Pokud například zaregistrujete vlastnost závislosti s parametrem NameLocation, pak pole identifikátoru, které definujete pro vlastnost závislosti, musí mít název LocationProperty.

V tomto příkladu je název vlastnosti závislosti a jeho přístupového objektu StateCLR ; pole identifikátoru je StateProperty; typ vlastnosti je Boolean; a typ, který registruje vlastnost závislosti je MyStateControl.

Pokud se vám nepodaří postupovat podle tohoto vzoru pojmenování, návrháři nemusí správně hlásit vaši vlastnost a některé aspekty aplikace stylu systému vlastností se nemusí chovat podle očekávání.

Můžete také zadat výchozí metadata pro vlastnost závislosti. Tento příklad registruje výchozí hodnotu State vlastnosti závislosti být 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

Další informace o tom, jak a proč implementovat vlastnost závislostí, na rozdíl od pouhého zálohování vlastnosti CLR s privátním polem, naleznete v tématu Přehled vlastností závislostí.

Viz také