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
.NET Desktop feedback