Réponses:
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 de GetValue()
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 :)
Grid.Row="1"
sur a Button
, définissez-le pour qu'il soit dans la ligne n ° 2 sur le parent Grid
(en raison du fait que les lignes sont de base zéro) mais Row
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 elle Value
passe à 1. Vous pourrez le faire en utilisant DataTrigger
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:
Point clé - La valeur des propriétés de dépendance est résolue
Le but ultime d'une propriété de dépendance, comme toute propriété, est de gérer l'état. Mais contrairement aux propriétés .Net normales, la valeur de la propriété locale n'est pas stockée dans une variable d'instance.
Au lieu de cela, les propriétés de dépendance sont enregistrées avec le cadre de propriété de dépendance et la valeur de propriété sous-jacente est résolue - ce qui signifie que la valeur est déterminée par le cadre de propriété de dépendance en fonction des règles définies par l'enregistrement de propriété.