2013-03-29 2 views
2

Управление MenuItem имеет удобное свойство IsEnabled (унаследовано от UIElement). Это позволяет мне, когда это необходимо, скрывать команду, открытую этим опцией меню.C# как отключить привязку клавиш

Но если эта команда также связана с ключом (например, Ctrl + K), пользователь может получить к нему доступ. Как получить функциональность IsEnabled до KeyBinding?

ответ

6

Если привязать KeyBinding к ICommand, вы можете просто установить ICommand.CanExecute в false (и, возможно, поднять CanExecuteChanged).

Это отключит KeyBinding, так как сама команда будет отключена.

+0

Да, это наиболее подходящий способ справиться с этой проблемой. Привязка элемента MenuItem к ICommand и использование CanExecute гарантирует, что все способы выполнения этой команды отключены, если CanExecute возвращает false. – Davio

+0

@Davio Это также имеет приятное преимущество, позволяя вам поддерживать «включенную» логику, привязанную непосредственно к тому же объекту, что и логика выполнения ... –

+0

Действительно, WPF отлично справляется с разделяющими GUI и бизнес-логическими соображениями из ящик, конечно, расширен с помощью парадигм дизайна, таких как MVVM/MVC – Davio

Смежные вопросы