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 DependencyProperty champ 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 pour prendre en charge ces fonctionnalités, implémentez vos propriétés en tant que propriété de dépendance.

Important

La documentation du Guide du bureau pour .NET 7 et .NET 6 est en cours de construction.

Exemple

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

Le champ d’identificateur doit suivre la convention <property name>Propertyd’affectation de noms . 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 et son accesseur CLR sont HasFish: le champ d’identificateur est donc nommé HasFishProperty. Le type de propriété de dépendance est Boolean et le type 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 montre comment définir une valeur par défaut pour la HasFish propriété de false dépendance.

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 de sauvegarder une propriété CLR avec un champ privé, consultez la vue d’ensemble des propriétés de dépendance.

Voir aussi