Je suis totalement en désaccord avec le concept selon lequel le modèle ne devrait pas mettre en œuvre le INotifyPropertyChanged
. Cette interface n'est pas spécifique à l'interface utilisateur! Il informe simplement d'un changement. En effet, WPF l'utilise fortement pour identifier les changements, mais cela ne signifie pas qu'il s'agit d'une interface utilisateur. Je le comparerais au commentaire suivant: " Un pneu est un accessoire de voiture ". Bien sûr, mais les vélos, les bus, etc. l'utilisent également. En résumé, ne considérez pas cette interface comme une interface utilisateur.
Cela dit, cela ne signifie pas nécessairement que je pense que le modèle devrait fournir des notifications. En fait, en règle générale, le modèle ne doit pas implémenter cette interface, sauf si cela est nécessaire. Dans la plupart des cas où aucune donnée de serveur n'est transmise à l'application cliente, le modèle peut être obsolète. Mais si j'écoute les données du marché financier, alors je ne vois pas pourquoi le modèle ne peut pas implémenter l'interface. À titre d'exemple, que se passe-t-il si j'ai une logique non-UI telle qu'un service qui, lorsqu'il reçoit une offre ou une demande de prix pour une valeur donnée, émet une alerte (par exemple via un e-mail) ou passe une commande? Cela pourrait être une solution propre possible.
Cependant, il existe différentes manières de réaliser les choses, mais je plaiderais toujours en faveur de la simplicité et éviterais la redondance.
Qu'est-ce qui est mieux? Définir des événements sur une collection ou des modifications de propriété sur le modèle de vue et les propager au modèle ou demander à la vue de mettre à jour intrinsèquement le modèle (via le modèle de vue)?
En fin de compte, chaque fois que vous voyez quelqu'un affirmer que « vous ne pouvez pas faire ceci ou cela », c'est un signe qu'ils ne savent pas de quoi ils parlent.
Cela dépend vraiment de votre cas et en fait MVVM est un framework avec beaucoup de problèmes et je n'ai pas encore vu une implémentation commune de MVVM à tous les niveaux.
J'aurais aimé avoir plus de temps pour expliquer les nombreuses saveurs de MVVM et quelques solutions aux problèmes courants - principalement fournis par d'autres développeurs, mais je suppose que je devrai le faire une autre fois.