2 votes

Pourquoi les ViewModels doivent-ils implémenter INotifyPropertyChanged ou utiliser des propriétés de dépendance ?

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.

2voto

Benjamin Gale Points 5390

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 .

1voto

Mare Infinitus Points 4177

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 :

SO sur le fonctionnement de la liaison

Pub Sub aka Publish Subscribe Pattern

0voto

user1399377 Points 469

INotiyfyPropertyChanged - Cette propriété est utilisée dans le modèle de vue de sorte que si des modifications sont apportées à l'interface utilisateur, cette propriété reflétera ces modifications.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X