Wohin mit den Ereignissen bei der Verwendung von MVVM?
Soll ich Sie alle Ereignisse im Blick auf den code hinter oder gibt es eine angemessenere Art und Weise, wie die Befehle im ViewModel?
Zum Beispiel, ich möchte zu öffnen, Registerkarte doppelklicken Sie auf das datagrid-Zeile, wo soll ich dieses Ereignis behandeln?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein sollten Sie nicht setzen-events im code-behind. In MVVM (Model-View-ViewModel) design pattern die view-Modell-die Komponente, die verantwortlich ist für die Handhabung der Anwendung ist die Darstellung der Logik und der Staat. Dies bedeutet, dass Ihre anzeigen den code-behind-Datei sollte enthalten keinen code, um Ereignisse zu behandeln, die ausgelöst werden, von jedem user interface (UI) - element.
zB wenn Sie die Schaltfläche in der xaml -
Stattdessen können Sie WPF Command.Alles, was Sie tun müssen, ist eine Bindung an die Execute-und die CanExecute-Delegierten und rufen Sie den Befehl.
Sodass Ihr code wird nun
SelectedCellsChanged
Veranstaltung, die Sie kann Draht bis zu Ihrem viewmodel mitSelectedCellsChanged="{Binding YourCommand}"
SelectedCellsChanged="{Binding YourCommand}"
gibt Sie Fehler "YourCommand ist keine Methode."Kyle ist richtig, dass Ihr Behandler sollte angezeigt werden in der view-Modell. Wenn eine command-Eigenschaft nicht vorhanden ist, dann können Sie verwenden eine Interaktion auslösen statt:
Oder Sie können die Verwendung von MVVM-Lite EventToCommand, die es erlaubt, auch pass im message-Parameter:
Die verwendet werden, in diesem Fall auf Abbrechen, das Fenster schließen-Ereignis in Reaktion auf die "Sind Sie sicher, dass Sie beenden wollen?" - dialog:
Relevanten namespaces sind wie folgt: