Отладка CanExecute CommandBinding
-
05-07-2019 - |
Вопрос
У меня есть пользовательский элемент управления с Button
, привязанным к NavigationCommands.RefreshCommand
. Обработчик команды находится в родительском элементе управления. CanExecute
обработчика выглядит следующим образом:
e.CanExecute = !IsConnecting; // IsConnecting is a Dependency Property
По какой-то причине кнопка Button
останется отключенной до тех пор, пока я не нажму на окно.
Если я нажму кнопку Button
и заставлю ее исполниться (в результате чего для IsConnecting
будет временно установлено значение true), кнопка будет отключена правильно, но не будет активируйте кнопку, пока я не вызову другое событие в окне (например, щелчок).
Существуют ли какие-либо инструменты или приемы, которые можно использовать для отладки обработчика CanExecute команды, связанной с кнопкой?
Решение
CanExecute кнопки вызывается только тогда, когда что-то происходит в графическом интерфейсе. Поскольку IsConnecting изменяется в фоновом режиме, WPF не обновляет элемент управления.
Чтобы заставить WPF обновить вызов CanExecute <код> CommandManager.InvalidateRequerySuggested код>