Partager via


Comment implémenter une propriété de dépendance (WPF .NET)

Cet article explique comment implémenter une propriété de dépendance à l’aide d’un champ DependencyProperty pour sauvegarder une propriété CLR (Common Language Runtime). Les propriétés de dépendance prennent en charge plusieurs fonctionnalités avancées du système de propriétés WPF (Windows Presentation Foundation). Ces fonctionnalités incluent les styles, la liaison de données, l’héritage, l’animation et les valeurs par défaut. Si vous souhaitez que les propriétés que vous définissez puissent prendre en charge ces fonctionnalités, implémentez vos propriétés comme une propriété de dépendance.

Exemple

L’exemple suivant montre comment inscrire une propriété de dépendance en appelant la méthode Register. La méthode Register retourne une instance DependencyProperty appelée identificateur de propriété de dépendance. L’identificateur est stocké dans un champ static readonly et contient le nom et les caractéristiques d’une propriété de dépendance.

Le champ d’identificateur doit suivre la convention d’affectation de noms <property name>Property. Par exemple, si vous inscrivez une propriété de dépendance avec le nom Location, le champ d’identificateur doit être nommé LocationProperty. Si vous ne suivez pas ce modèle de nommage, les concepteurs WPF peuvent ne pas signaler correctement votre propriété, et les aspects de l’application de style système de propriétés peuvent ne pas se comporter comme prévu.

Dans l’exemple suivant, le nom de la propriété de dépendance ainsi que son accesseur CLR est HasFish. Par conséquent, le champ d’identificateur est nommé HasFishProperty. Le type de propriété de dépendance est Boolean et le type de propriétaire qui inscrit la propriété de dépendance est Aquarium.

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

public class Aquarium : DependencyObject
{
    public static readonly DependencyProperty HasFishProperty =
        DependencyProperty.Register(
            name: "HasFish",
            propertyType: typeof(bool),
            ownerType: typeof(Aquarium),
            typeMetadata: new FrameworkPropertyMetadata(defaultValue: false));

    public bool HasFish
    {
        get => (bool)GetValue(HasFishProperty);
        set => SetValue(HasFishProperty, value);
    }
}
Public Class Aquarium
    Inherits DependencyObject

    Public Shared ReadOnly HasFishProperty As DependencyProperty =
    DependencyProperty.Register(
        name:="HasFish",
        propertyType:=GetType(Boolean),
        ownerType:=GetType(Aquarium),
        typeMetadata:=New FrameworkPropertyMetadata(defaultValue:=False))

    Public Property HasFish As Boolean
        Get
            Return GetValue(HasFishProperty)
        End Get
        Set(value As Boolean)
            SetValue(HasFishProperty, value)
        End Set
    End Property

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 d'appuyer une propriété CLR avec un champ privé, consultez aperçu des propriétés de dépendance.

Voir aussi

  • Vue d’ensemble des propriétés de dépendance
  • sujets pratiques