Ich frage mich, warum MVVM Licht fehlt Befehl mit Async-Ausführung? Ich glaube, es gibt viele Fälle, in denen dies nützlich sein könnte, also lassen Sie mich einen nennen.Async Befehl Ausführung in MVVM Licht
Nehmen wir an, dass unsere Benutzeroberfläche einen Container enthält, der mehrere Bildschirme enthält. Der Benutzer kann einen bestimmten Bildschirm oder einen Container mit mehreren Bildschirmen schließen. Angenommen, ein Benutzer hat einen Schließbefehl für den Container ausgegeben. Container im Gegenzug ruft auf jedem Bildschirm einen Schließbefehl auf und muss warten, bis der Bildschirm geschlossen wird. Dies kann in der Praxis die Validierung von Daten bedeuten. Speichern, usw. Aus diesem Grund müssen wir einen asynchronen Aufruf ausgeben, damit die Benutzeroberfläche nicht mehr reagiert, und außerdem müssen wir warten, bis die Aufgabe abgeschlossen ist, um fortzufahren.
Also, wenn wir so etwas wie dies in Command haben
public RelayCommand CloseCommand
{
get { return _closeCommand ?? _closeCommand = new RelayCommand(async() =>
{
foreach (var screen in Screens)
{
if (!await screen.CloseCommand.ExecuteAsync(null))
{
// do something
}
}
}) }
}
Wir könnten auch zusätzliche Methode auf dem Bildschirm aussetzen, aber meiner Meinung nach sollte es Aufgabe der RelayCommand sein, da es dort bereits vorhanden sind.
Oder gibt es eine andere Methode, um ein solches Szenario zu behandeln?
Verwendet dies MVVM Light? – dumbledad
@dumbledad: Nein, es ist Framework-Agnostiker. –
Ich kann nicht sehen, wie ich es auf MVVM Light anwenden würde, (speziell) (http://stackoverflow.com/q/30729999/575530), wie man Daten aus der Datei (dh einen unvermeidlichen asynchronen Job) in den Konstruktor des Ansichtsmodells lädt so dass Seiten blendbar sind. Ich werde weiter nachdenken. – dumbledad