2013-03-29 3 views
2

MenuItem 컨트롤에는 IsEnabled (UIElement에서 상속) 편리한 속성이 있습니다. 적절한 경우 해당 메뉴 옵션에 의해 노출 된 명령을 숨길 수 있습니다.키 바인딩을 사용하지 않도록 설정하는 방법

그러나 명령이 키 (예 : Ctrl + K)에도 바인딩되어있는 경우에도 사용자는 계속 액세스 할 수 있습니다. IsEnabled 기능을 KeyBinding으로 가져 오려면 어떻게합니까? 당신이 ICommandKeyBinding을 결합하면

답변

6

는, 당신은 단지 ICommand.CanExecutefalse에 (그리고 잠재적으로 CanExecuteChanged 인상)을 설정할 수 있습니다.

명령 자체가 비활성화되므로 KeyBinding이 "비활성화"됩니다.

+0

예,이 방법이이 문제를 해결하는 가장 적절한 방법입니다. MenuItem을 ICommand에 바인딩하고 CanExecute를 사용하면 CanExecute가 false를 반환하면 해당 명령을 실행하는 모든 방법이 비활성화됩니다. – Davio

+0

@Davio 또한 "활성화 된"로직을 실행 로직과 동일한 객체에 직접 묶어 둘 수있는 좋은 이점이 있습니다. –

+0

실제로 WPF는 GUI와 비즈니스 로직의 관심사를 분리하는 훌륭한 작업을 수행합니다. 상자, 물론 MVVM/MVC 같은 디자인 패러다임에 의해 향상 – Davio

관련 문제