Zastanawiam się, dlaczego brakuje polecenia MVVM z brakiem wykonania asynchronicznego? Wierzę, że jest wiele przypadków, w których może to być przydatne, więc pozwól mi wymienić jeden.Wykonanie polecenia Async w świetle MVVM
Powiedzmy, że nasz interfejs użytkownika zawiera jeden kontener zawierający wiele ekranów. Użytkownik może zamknąć określony ekran lub kontener z wieloma ekranami. Powiedzmy, że użytkownik wydał polecenie zamknięcia kontenera. Kontener w odpowiedzi wywołuje polecenie zamknięcia na każdym ekranie i musi czekać na zamknięcie ekranu. W praktyce może to oznaczać walidację danych. oszczędzanie itp. Z tego powodu musimy wywołać wywołanie asynchroniczne, aby interfejs użytkownika przestał odpowiadać, a także musimy czekać na zakończenie zadania, aby kontynuować.
Tak więc, jeśli mamy coś takiego w Dowództwie
public RelayCommand CloseCommand
{
get { return _closeCommand ?? _closeCommand = new RelayCommand(async() =>
{
foreach (var screen in Screens)
{
if (!await screen.CloseCommand.ExecuteAsync(null))
{
// do something
}
}
}) }
}
Mogliśmy również wystawiać dodatkową metodę na ekranie, ale moim zdaniem powinno być zadaniem RelayCommand, ponieważ istnieje tam.
Czy istnieje inna metodologia obsługi takiego scenariusza?
Czy to wykorzystuje światło MVVM? – dumbledad
@dumbledad: Nie, jest to metoda niezależna od ramek. –
Nie widzę, w jaki sposób zastosować go do MVVM Light, [w szczególności] (http://stackoverflow.com/q/30729999/575530), jak załadować dane z pliku (tj. Nieuchronnie asynchrous pracy) w konstruktorze modelu widoku aby strony były Blendable. Będę dalej myśleć. – dumbledad