Я пишу приложение WPF с использованием шаблона MVVM, основанного на следующей статье: Приложения WPF с шаблоном проектирования Model-View-ViewModel
У меня в View есть две кнопки со свойством кнопок «Command», привязанным (с привязкой данных) к данному экземпляру класса RelayCommand (см. «Рис. 3 Класс RelayCommand» из статьи выше). Класс RelayCommand имеет поддержку для проверки возможности выполнения данной команды.
WPF автоматически отключает кнопки, команда которых не может быть выполнена.
Каждая из моих команд (в классе ViewModel) запускает фоновую операцию, и команда не может быть выполнена снова, пока не завершится фоновая операция. Экземпляры RelayCommand имеют информацию о том, работает ли фоновая операция или она завершена.
Моя проблема заключается в следующем: после нажатия любой из кнопок кнопки автоматически отключаются (что в порядке), поскольку фоновая операция началась и команда не может быть выполнена до ее завершения, но после ее завершения, кнопки не включаются автоматически, потому что предикат их команды «может быть выполнен» не переоценивается автоматически. Переоценка может быть инициирована вручную, если приложение потеряет свою актуальность и восстановит фокус (нажав ALT + TAB). После этого трюка кнопки снова включаются.
Как я могу программно переоценить состояние команды кнопки "можно выполнить"?