Ich mag die MVVM-Idee von RelayCommand, die durch das ViewModel ausgesetzt ist. Das ist nett und elegant für Operationen, die ohne weitere Benutzereingaben durchgeführt werden können. Einfach. Testbar.MVVM und Befehle, die mehr GUI zeigen
Allerdings sind nicht alle Operationen UI-less. Einige erfordern eine Bestätigung ("Möchten Sie wirklich löschen?"). Andere erfordern noch mehr Informationen. Das Öffnen einer Datei kann von einem Dialogfeld "Datei öffnen" bis hin zu einem vollständigen Importassistenten führen.
Was ist der beste Weg, innerhalb einer MVVM-Anwendung Befehle zu schreiben, die Benutzereingaben erfordern? Gibt es ein etabliertes Muster, um dies irgendwie mit der Abhängigkeitsinjektion zu lösen? Soll ich einen KeyDown-Handler im Code-Behind schreiben und das Event explizit ausführen lassen? Sollte ich auf RoutedUICommand zurückgreifen und alle "Zeige den nächsten GUI" -Code in meine Ansicht einfügen? Oder ist etwas offensichtlich, das ich völlig vermisse?
Der Teil "show a Open dialog" kann wiederverwendbar sein; Aber dann müssen Sie etwas mit dieser Datei machen, und das wird anwendungsspezifisch sein, also bin ich mir nicht sicher, ob ich sehe, wie das funktioniert. Können Sie ein Beispiel dafür geben, wie Sie dies mit Verhaltensweisen tun würden? –
@ joe-white Senden Sie eine Nachricht an den UI-Stack, die erfasst und an ein ViewModel weitergeleitet wird ... Oder wenn Sie eine Bindung an eine Property in einem ViewModel herstellen, wissen Sie, dass die Datei zugewiesen wird, wenn sich die Eigenschaft ändert. –