Я пытаюсь реализовать очень отзывчивый интерфейс для моего MVVM-приложения, поэтому я решил, чтобы все обработчики команд выполнялись автоматически в BackgroundWorker
, чтобы они не блокировали пользовательский интерфейс.Возможно ли, что CommandManager запрашивает только определенную команду WPF вместо всех?
Но в то же время я не хочу, чтобы пользователь мог выполнять ту же команду, пока он все еще выполняется в фоновом режиме. Решение кажется очевидным:
- Когда
Executed
обработчик вызывается, есть возвращениеCanExecute
обработчикаfalse
- Запустите
BackgroundWorker
асинхронной - Когда
BackgroundWorker
отделки, есть возвращениеCanExecute
обработчикаtrue
снова.
Проблема заключается в том, что после шага 1 и после шага 3 мне необходимо уведомить WPF о том, что CanExecute
изменился и что это необходимо. Я знаю, что могу это сделать, позвонив CommandManager.InvalidateRequerySuggested
, но это вызывает также обработчики CanExecute
всех остальных команд. Имея много команд, это не хорошо.
Есть ли способ запросить информацию о конкретной команде - то есть той, которая в настоящее время выполняется?
ТИА