Partager via


Guide pratique pour implémenter une propriété de dépendance

Cet exemple montre comment sauvegarder une propriété CLR (Common Language Runtime) avec un DependencyProperty champ, définissant ainsi une propriété de dépendance. Lorsque vous définissez vos propres propriétés et souhaitez qu’elles prennent en charge de nombreux aspects de la fonctionnalité WPF (Windows Presentation Foundation), notamment 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é de dépendance.

Exemple

L’exemple suivant inscrit d’abord une propriété de dépendance en appelant la Register méthode. 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 celui Name que vous avez choisi pour la propriété de dépendance dans le cadre de l’appel Register , ajouté par la chaîne Propertylittérale. Par exemple, si vous inscrivez 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 nommé LocationProperty.

Dans cet exemple, le nom de la propriété de dépendance et son accesseur CLR est State; le champ d’identificateur est StateProperty; le type de la propriété est Boolean; et le type qui inscrit la propriété de dépendance est MyStateControl.

Si vous ne respectez pas ce modèle d’affectation de noms, les concepteurs risquent de ne pas signaler correctement votre propriété et certains aspects de l’application des styles du système de propriétés risquent de ne pas se comporter comme prévu.

Vous pouvez également spécifier des métadonnées par défaut pour une propriété de dépendance. Cet exemple inscrit false comme valeur par défaut de la propriété de dépendance State.

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

Pour plus d’informations sur la façon et la raison d’implémenter une propriété de dépendance, plutôt que de sauvegarder simplement une propriété CLR avec un champ privé, consultez Vue d’ensemble des propriétés de dépendance.

Voir aussi