J'ai vu de nombreux tutoriels sur la paternité MVVM, mais je ne comprends toujours pas pourquoi je dois obtenir une propriété de dépendance ou une propriété d'accès. INotiyfyPropertyChanged
-si je veux renvoyer des informations du ViewModel vers la vue.
Réponses
Trop de publicités?Les propriétés de dépendance fournissent une notification de changement intégrée lorsqu'une propriété change, ce qui signifie que WPF sait quand la valeur d'un contrôle a changé.
Vos types de ViewModel ne fournissent pas, par défaut, de mécanisme de notification des modifications. S'ils ne prennent pas en charge l'une ou l'autre de ces options, comment la vue est-elle censée savoir qu'une propriété de votre ViewModel a été modifiée ?
Vous avez besoin que votre viewModel utilise l'une ou l'autre de ces options afin que la vue puisse être notifiée lorsqu'une valeur de propriété change.
Cela signifie que si la valeur d'une propriété est modifiée dans le code, l'interface utilisateur est mise à jour et si une propriété est modifiée par une entrée utilisateur, votre viewModel (et finalement votre modèle) est également mis à jour pour refléter ces changements. (En fait, les deux parties d'une liaison doivent pouvoir se communiquer mutuellement un changement de propriété).
Le site INotifyPropertyChanged
est la méthode préférée car elle signifie que vos viewModels ne sont pas spécifiques à WPF et peuvent être utilisés par d'autres technologies d'interface utilisateur. De plus, les propriétés de dépendance ne peuvent être utilisées que dans des types qui dérivent de DependencyObject
.
Premièrement : vous n'avez pas besoin d'utiliser INotifyPropertyChanged
ou DependencyObject
du tout.
Mais, et c'est le point central de l'utilisation de Binding, il y a un certain mécanisme de Pub / Sub en le Binding, qui est à l'écoute de ces PropertyChanged
et faire la mise à jour de la vue dans le cas où une propriété pertinente pour le Binding a changé.
Voici de plus amples informations à ce sujet :