Ho un'applicazione WPF utilizzando il modello MVVM che a volte devono mostrare un waitcursor quando si è occupato a fare qualcosa che l'utente deve aspettare. Grazie ad una combinazione di risposte in questa pagina: display Hourglass when application is busy, ho una soluzione che funziona quasi (anche se non è realmente MVVM nello spirito). Ogni volta che faccio qualcosa che richiede tempo nei miei ViewModels faccio questo:Come mostrare un waitcursor quando l'applicazione WPF è l'associazione dati occupato
using (UiServices.ShowWaitCursor())
{
.. do time-consuming logic
this.SomeData = somedata;
}
(ShowWaitCursor() restituisce un IDisposable che mostra il waitcursor fino a quando non è in via di dismissione) L'ultima riga nel mio esempio è dove ho imposta alcune proprietà. Questa proprietà è associata al mio XAML, ad es. in questo modo:
<ItemsControl ItemsSource="{Binding SomeData}" />
Tuttavia, dal momento che questo potrebbe essere una lunga lista di oggetti e talvolta con DataTemplates complessi, ecc il legame reale e il rendering a volte prende una notevole quantità di tempo. Poiché questa associazione si svolge al di fuori della mia dichiarazione using, il waitcursor andrà via prima che l'attesa effettiva sia finita per l'utente.
Quindi la mia domanda è come fare un waitcursor in un'applicazione WPF MVVM che prende in considerazione l'associazione dati?
grande realizzazione! Questo funziona perfettamente per me quando il consumo di tempo sta accadendo in un'operazione vincolante dell'interfaccia utente di terze parti; quando non so davvero quando è finito. Grazie! –
Vorrei cambiarlo per usare un conteggio piuttosto che un bool. In questo modo, più posti possono dire di aver bisogno del cursore di attesa e rimarrà finché non lo hanno abbandonato. –
Bello! Grazie! – Dummy01