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 State
CLR ; 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é
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro