Mam aplikację WPF używającą wzorca MVVM, która czasami musi pokazać kodeka, gdy jest zajęty robieniem czegoś, na co użytkownik musi czekać. Dzięki kombinacji odpowiedzi na tej stronie: display Hourglass when application is busy, mam rozwiązanie, które prawie działa (chociaż tak naprawdę nie jest to MVVM w duchu). Ilekroć coś zrobić czasochłonne w moich ViewModels zrobić to:Jak wyświetlić znacznik czasu, gdy aplikacja WPF jest zajęta Databinding
using (UiServices.ShowWaitCursor())
{
.. do time-consuming logic
this.SomeData = somedata;
}
(ShowWaitCursor() zwraca IDisposable, który pokazuje waitcursor dopóki jest ono usuwane) Ostatni wiersz w moim przykładzie, gdzie ustaw niektóre właściwości. Ta właściwość jest powiązana z moim XAML, np. tak:
<ItemsControl ItemsSource="{Binding SomeData}" />
Jednakże, ponieważ to może być długa lista obiektów, a czasem ze złożonymi datatemplates itp rzeczywista wiążące i renderowania kiedyś zajmuje znaczną ilość czasu. Ponieważ to wiązanie ma miejsce poza moją instrukcją użycia, kelner zniknie przed faktycznym oczekiwaniem użytkownika.
Moje pytanie brzmi: jak wykonać przystawkę w aplikacji WPV MVVM, która bierze pod uwagę databinding?
Świetna realizacja! Działa to doskonale dla mnie, gdy zużycie czasu dzieje się w operacji wiążącej UI innej firmy; kiedy nie wiem, kiedy to się robi. Dziękuję Ci! –
Chciałbym to zmienić, aby użyć liczby, a nie boolu. W ten sposób wiele miejsc może powiedzieć, że potrzebują kursora oczekiwania i pozostaną, dopóki wszyscy nie zrezygnują. –
Nice! Dziękuję Ci! – Dummy01