Postupy: Implementace vlastnosti závislosti
Tento příklad ukazuje, jak zálohovat vlastnost CLR (Common Language Runtime) s polem DependencyProperty, čímž definujete 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, kterou jste zvolili pro vlastnost závislosti jako součást volání Register, připojena literálovým řetězcem Property
. Pokud například zaregistrujete vlastnost závislosti s NameLocation
, pak pole identifikátoru, které definujete pro vlastnost závislosti, musí být pojmenována LocationProperty
.
V tomto příkladu je název vlastnosti závislosti a jeho přístupového objektu CLR State
; 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 vlastnosti závislosti State
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ávislosti, na rozdíl od pouhého zálohování vlastnosti CLR privátním polem, naleznete v tématu Přehled vlastností závislosti .
Viz také
- Přehled vlastností závislosti
- Postupy a témata
.NET Desktop feedback