WPF уведомление "ожидайте"
От: CyberRussia  
Дата: 11.11.20 09:32
Оценка:
Добрый день,

Приложение WPF Core. На форме указан DataContext, для контролов прописаны Binding (в XAML). Есть сторонний контрол (DevExpress) загрузка данных в который идет не очень быстро.
Есть кнопка <Button x:Name="Filter" Command="{Binding RefreshSourcePropertyCommand}" Click="Filter_Click" >Пересчет</Button>

Вопрос — как на время, пока ведется обновление данных для страницы вывести для пользователя какое-либо уведомление "Ожидайте" и по окончанию обновления его убрать?

Попытка решить в лоб, типа Filter_Click... { lblWait.Content = "Ожидайте"; } не работает, потому что надпись на форму выводится когда обновление страницы уже закончилось.
Re: WPF уведомление "ожидайте"
От: okon  
Дата: 11.11.20 10:07
Оценка:
Здравствуйте, CyberRussia, Вы писали:

CR>Добрый день,


CR>Приложение WPF Core. На форме указан DataContext, для контролов прописаны Binding (в XAML). Есть сторонний контрол (DevExpress) загрузка данных в который идет не очень быстро.

CR>Есть кнопка <Button x:Name="Filter" Command="{Binding RefreshSourcePropertyCommand}" Click="Filter_Click" >Пересчет</Button>

CR>Вопрос — как на время, пока ведется обновление данных для страницы вывести для пользователя какое-либо уведомление "Ожидайте" и по окончанию обновления его убрать?


CR>Попытка решить в лоб, типа Filter_Click... { lblWait.Content = "Ожидайте"; } не работает, потому что надпись на форму выводится когда обновление страницы уже закончилось.


Делаешь в команде


IsWaiting = true;
await LongOperationAsync();
IsWaiting = false;


lbWaitContent.Visibility = {Binding IsWaiting, Converter=Boolean2VisibilityConverter}
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[2]: WPF уведомление "ожидайте"
От: CyberRussia  
Дата: 11.11.20 10:23
Оценка:
Здравствуйте, okon, Вы писали:
O>IsWaiting = true;
O>await LongOperationAsync();
Так нет никакого LongOperationAsync. Код страницы пустой, все на Binding в XAML сделано
Re[3]: WPF уведомление "ожидайте"
От: okon  
Дата: 11.11.20 11:55
Оценка:
Здравствуйте, CyberRussia, Вы писали:

CR>Здравствуйте, okon, Вы писали:

O>>IsWaiting = true;
O>>await LongOperationAsync();
CR>Так нет никакого LongOperationAsync. Код страницы пустой, все на Binding в XAML сделано

Как нет, а вот эта команда RefreshSourcePropertyCommand, она реализована во вьюмодели и там выполняется какая-то долгая операция.

P.S. не обязательно конечно во вьюмодели — может быть и RoutedCommand, или например у тебя ItemsSource таблицы биндится на источник данный который должен как-то пересчитываться чтобы данные обновились — вот это и будет твой LongOperation.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Отредактировано 11.11.2020 12:26 okon . Предыдущая версия . Еще …
Отредактировано 11.11.2020 11:55 okon . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.