J'aime l'idée MVVM d'un RelayCommand qui est exposée par le ViewModel. C'est agréable et élégant, pour les opérations qui peuvent être effectuées sans autre intervention de l'utilisateur. Simple. Testable.MVVM et les commandes qui montrent plus d'interface graphique
Cependant, toutes les opérations ne sont pas sans interface utilisateur. Certains nécessitent une confirmation ("Êtes-vous sûr de vouloir supprimer?"). D'autres nécessitent encore plus d'informations. Ouverture d'un fichier peut entraîner n'importe quoi à partir d'une boîte de dialogue Ouvrir un fichier à travers un assistant d'importation à part entière.
Quelle est la meilleure façon, au sein d'une application MVVM, d'écrire des commandes nécessitant une saisie par l'utilisateur? Existe-t-il un modèle établi pour résoudre cela avec injection de dépendance en quelque sorte? Dois-je écrire un gestionnaire KeyDown dans le code-behind, et le faire explicitement exécuter l'événement? Devrais-je me rabattre sur RoutedUICommand, et mettre tout le code "afficher le GUI suivant" dans ma vue? Ou y a-t-il quelque chose d'évident que je suis totalement absent?
La partie "Afficher une boîte de dialogue ouverte" peut être réutilisable; mais alors vous devez faire quelque chose avec ce fichier, et cela va être spécifique à l'application, donc je ne suis pas sûr de voir comment cela fonctionne. Pouvez-vous donner un exemple de la façon dont vous feriez cela avec des comportements? –
@ joe-white Envoyez un message routé vers le haut de la pile de l'interface utilisateur qui sera interceptée et relayée vers un ViewModel ... Ou si vous liez une propriété sur un ViewModel, vous saurez que le fichier est affecté lorsque la propriété change. –