Qu'est-ce qu'une propriété de dépendance dans .Net (en particulier dans le contexte WPF). Quelle est la différence avec la propriété ordinaire?
136
Qu'est-ce qu'une propriété de dépendance dans .Net (en particulier dans le contexte WPF). Quelle est la différence avec la propriété ordinaire?
Les propriétés de dépendance sont des propriétés de classes qui dérivent de DependencyObject, et elles sont spéciales en ce sens qu'au lieu d'utiliser simplement un champ de sauvegarde pour stocker leur valeur, elles utilisent certaines méthodes d'assistance sur DependencyObject.
La plus belle chose à leur sujet est qu'ils ont toute la plomberie pour la liaison de données intégrée. Si vous leur associez quelque chose, ils le notifieront quand ils changeront.
La seule explication que j'ai trouvée utile et bien écrite est celle-ci: http://www.wpftutorial.net/dependencyproperties.html
Fondamentalement, les DependencyProperties diffèrent des propriétés normales en ce qu'ils ne sont pas seulement des setters / getters pour les champs de la classe, mais ils récupèrent leurs valeurs réelles de manière dynamique pendant l'exécution. La
SetValue()
méthode des DP est assez simple et définit la valeur locale de la propriété sur la valeur que vous lui avez donnée. Cependant, lorsque vous essayez deGetValue()
partir d'un DependencyProperty, il recherchera d'abord une valeur locale, si aucune n'est présente (ce qui est viable dans DependencyProperties contrairement aux propriétés régulières), il continuera dans l'arborescence logique de l'interface utilisateur jusqu'à ce qu'il trouve une telle valeur. Si le framework a atteint le sommet de l'arborescence sans trouver de valeurs locales, il utilisera alors une valeur par défaut prédéfinie comme valeur de la propriété.Cette méthode permet à DependencyProperties de consommer moins de mémoire que les propriétés normales, car seules les valeurs explicitement définies par l'utilisateur seront stockées localement.
Et, comme mentionné ci-dessus, DependencyProperties nous permet également de nous lier à eux dans le code XAML et de définir des déclencheurs sur eux, ce qui n'est pas autorisé sur les propriétés normales.
J'espère avoir réussi à effacer une partie du flou :)
la source
Grid.Row="1"
sur aButton
, définissez-le pour qu'il soit dans la ligne n ° 2 sur le parentGrid
(en raison du fait que les lignes sont de base zéro) maisRow
DependencyProperty appartient à l'Grid
objet.DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
, vouliez-vous dire à la fois la liaison en XAML et la définition de déclencheurs ou simplement la définition de déclencheurs n'est pas autorisée. Merci pour le suivi et pour aider à rendre les choses plus claires!Value
propriété (pas DP) avec la valeur 0 et que vous souhaitiez que votre vue fasse quelque chose quand elleValue
passe à 1. Vous pourrez le faire en utilisantDataTrigger
et en définissant leBinding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ fournit une bonne explication des propriétés de dépendance à la fois dans le contexte de WF et WPF.
Un extrait:
la source