У мене є місце, Menuде кожна MenuItemв ієрархії має свою Commandвластивість, встановлену на визначений RoutedCommandя. Асоційований CommandBindingзабезпечує зворотний виклик, для оцінки CanExecuteякого контролюється включений стан кожного MenuItem.
Це майже працює. Елементи меню спочатку містять правильні ввімкнені та вимкнені стани. Однак коли дані, які CanExecuteвикористовує мій зворотний дзвінок, змінюються, мені потрібна команда для повторного запиту результату від мого зворотного дзвінка, щоб цей новий стан відобразився в інтерфейсі користувача.
Немає публічних методів щодо цього RoutedCommandчи CommandBindingдля цього.
Зауважте, що зворотний виклик знову використовується при натисканні або введенні в елемент керування (я думаю, що він спрацьовує при введенні, оскільки перемикання миші не викликає оновлення).