Comment : implémenter une propriété de dépendance
Cet exemple montre comment stocker une propriété common language runtime (CLR) avec un champ DependencyProperty et ainsi définir une propriété de dépendance. Lorsque vous définissez vos propres propriétés et voulez qu'elles prennent en charge de nombreux aspects des fonctionnalités Windows Presentation Foundation (WPF), telles que les styles, la liaison de données, l'héritage, l'animation et les valeurs par défaut, vous devez les implémenter en tant que propriétés de dépendance.
Exemple
L'exemple suivant enregistre tout d'abord une propriété de dépendance en appelant la méthode Register. Le nom du champ d'identificateur que vous utilisez pour stocker le nom et les caractéristiques de la propriété de dépendance doit être Name que vous avez choisi pour la propriété de dépendance dans le cadre de l'appel Register, ajouté par la chaîne littérale Property. Par exemple, si vous enregistrez une propriété de dépendance avec un Name de Location, le champ d'identificateur que vous définissez pour la propriété de dépendance doit être appelé LocationProperty.
Dans cet exemple, le nom de la propriété de dépendance et de son accesseur CLR est State, le champ d'identificateur est StateProperty, le type de la propriété est Boolean et le type qui enregistre la propriété de dépendance est MyStateControl.
Si vous ne suivez pas ce modèle d'affectation de noms, les concepteurs risquent de ne pas signaler votre propriété correctement, tandis que certains aspects de l'application du style du système de propriétés pourraient avoir un comportement inattendu.
Vous pouvez également spécifier des métadonnées par défaut pour une propriété de dépendance. Cet exemple enregistre la valeur par défaut false pour la propriété de dépendance State.
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));
}
Pour plus d'informations sur l'implémentation d'une propriété de dépendance et les raisons de cette implémentation, par opposition au simple stockage d'une propriété CLR par un champ privé, consultez Vue d'ensemble des propriétés de dépendance.
Voir aussi
Concepts
Vue d'ensemble des propriétés de dépendance