Mi chiedo perché MVVM manca il comando mancante con l'esecuzione asincrona? Credo che ci siano molti casi in cui ciò potrebbe essere utile, quindi fammi un nome.Esecuzione comando asincrono in luce MVVM
Diciamo che la nostra UI contiene un contenitore che contiene più schermi. L'utente può chiudere un particolare schermo o un contenitore con più schermi. Diciamo che un utente ha emesso un comando di chiusura sul contenitore. Il contenitore in risposta richiama il comando di chiusura su ogni schermata e deve attendere la chiusura dello schermo. Questo in pratica può significare validare i dati. salvataggio, ecc. Per questo motivo è necessario emettere una chiamata asincrona per impedire all'interfaccia utente di non rispondere e inoltre è necessario attendere il completamento dell'attività, per poter continuare.
Quindi, se abbiamo qualcosa di simile in Command
public RelayCommand CloseCommand
{
get { return _closeCommand ?? _closeCommand = new RelayCommand(async() =>
{
foreach (var screen in Screens)
{
if (!await screen.CloseCommand.ExecuteAsync(null))
{
// do something
}
}
}) }
}
Potremmo anche esporre ulteriore metodo sullo schermo, ma a mio parere dovrebbe essere compito della RelayCommand, dal momento che esistono già lì.
Oppure esiste una diversa metodologia per gestire tale scenario?
Questo utilizza MVVM Light? – dumbledad
@dumbledad: No, è indipendente dal framework. –
Non riesco a vedere come applicarlo a MVVM Light, [in particolare] (http://stackoverflow.com/q/30729999/575530) come caricare i dati dal file (ovvero un lavoro inevitabilmente asincrono) all'interno del costruttore del modello di visualizzazione in modo che le pagine siano combinabili. Continuerò a pensare. – dumbledad