Nous sommes juste à entrer dans MVVM en WPF.
Nous avons mis en place notre Viewmodel avec "fortement typé' propriétés (int, double? etc.) qui nous lient à la vue.
Type de conversion fonctionne OK, pour la plupart, et donc de la saisie de données est assez simple. Mais nous nous heurtons à des problèmes de validation.
Si, par exemple, une valeur non numérique est entré dans une zone de texte liée à une propriété numérique, la conversion échoue, la propriété n'est jamais réglé, et nous n'avons jamais obtenir une chance de fournir une rétroaction à l'utilisateur. Pire, le site conserve sa valeur actuelle, conduisant à un décalage entre ce qui est affiché dans la vue et ce qui est fait dans le ViewModel.
Tout cela peut être traitée avec des convertisseurs de valeur, je le sais. Mais j'ai vu plusieurs avis à l'effet que la conversion ne doit pas être le point de vue de la responsabilité à tous. Ce qui est entré dans la vue sont des chaînes de caractères, et la conversion de, de validation, etc. devrait être le ViewModel de la responsabilité du (de sorte que l'argument va).
Si donc, nous devons réécrire la plupart des propriétés sur notre Viewmodel de la chaîne, et de fournir des informations d'erreur via l'interface IErrorInfo, par exemple. Il serait sûrement pour faire plus simple, plus légère XAML dans la vue. D'autre part, la conversion, la validation etc. sera moins déclarative, explicite et flexible, du point de vue du concepteur de vues.
Il nous semble que ces deux approches sont fondamentalement différentes, donc avant de nous décider, nous aimerions quelques informés AFIN d'avis sur la question.
Donc: faut-Viewmodel exposer un simplifiée, "texte" basés sur l'interface de la vue et de la poignée de la conversion en interne? Ou doit-ViewModel propriétés exposer les types de données réels, laissant ces tâches à la vue à la poignée?
Mise à jour:
Difficile de choisir un gagnant ici, mais j'ai finalement atterri sur l'un de vous qui conclut à plus ou moins comme moi.
Plus précisément, nous avons décidé de garder le ViewModel propriétés typées. La principale raison pour cela est la flexibilité qu'il offre à nous dans la conception de la vue, et la puissance de l'explicite, déclarative de conversion ou de mise en forme dans le code XAML.
J'ai remarqué une hypothèse, à vous, qui ne seront pas d'accord avec nous dans cette, que la conception de l'affichage est fixe et des prêts. Par conséquent, aucune décision au sujet de la conversion, mise en forme, etc. besoin d'être fait dans la vue. Mais la nôtre est un processus agile, et nous n'avons pas connaître tous les détails de l'INTERFACE utilisateur deviné à l'avance.
En fait, les détails de l'INTERFACE utilisateur d'être travaillé le long de la route laisse place à la créativité et d'ailleurs, à mon avis, encore une méticuleusement travaillé sur la conception, finiront toujours morphing tout au long du processus de mise en œuvre.
Le point de tout cela est que tandis que les entreprises des règles d'application de la loi appartient certainement dans le ViewModel, il nous semble que la simple conversion et de mise en forme est un point de vue-chose. Cela peut ressembler à de l'hérésie, mais je n'ai pas vraiment l'impression de conversion de type dans le point de vue des besoins de l'unité de dépistage à tous (à condition av nous avons unité de tester le type de convertisseurs).
Dans l'ensemble une grande discussion, les gens, avec bien formulées, des opinions éclairées. Merci.