2011-01-09 2 views
4

기본적으로 윈도우의 범위 내에서 유효한 키보드 단축키를 만들려고합니다. 포커스를 바인드하는 컨트롤 내에 포커스가있을 때만 활성화되는 것이 아닙니다. 자세히키보드 단축키에 대한 명령 라우팅

....

I가 3 개 컨트롤이있는 창

  • 도구 모음
  • 텍스트 상자
  • 사용자 정의 컨트롤

을 도구 모음에는 명령 CustomCommands.CmdA에 바인딩 된 단추가 있으며 키보드 sh에 연결됩니다. ortcut Ctrl + .

내 사용자 정의 컨트롤은 CmdA을 처리 할 수 ​​있습니다. 앱을 실행하고 내 맞춤 컨트롤을 클릭하면 CmdA이 활성화되어 정상적으로 작동합니다. Ctrl + T 명령이 실행됩니다.

그러나 텍스트 상자를 선택하면 사용자 지정 명령 CmdA이 비활성화됩니다.

CmdA의 버튼 대상 명령을 설정하여 수정할 수 있습니다. 이제 textBox를 선택하면 CmdA이 계속 사용됩니다.

키보드 단축키 Ctrl + 아무 것도하지 않습니다.

키보드 단축키의 범위를 변경하는 쉬운 방법이 있습니까? 아니면 keypress를 어딘가에 잡아야하고, Command와 관련된 명령을 내리고 경로를 지정해야합니다 (이 작업을 수행 할 수있는 프레임 워크가있는 경우).

답변

2

이를 위해서는 일반적으로 창에 입력 바인딩 예 : 들어

<Window.InputBindings> 
     <KeyBinding Key="N" Modifiers="Control" Command="New"/> 
     ... 
</Window.InputBindings> 

내장 된 응용 프로그램 명령 (RoutedCommands를있는) 당신은뿐만 아니라 창에 CommandBinding이 필요합니다.

<Window.CommandBindings> 
     <CommandBinding Command="New" Executed="CommandBinding_Executed" /> 
     ... 
</Window.CommandBindings> 
+0

감사합니다. H.B, 그러나 이것은 "새로운"명령을 "CommandBinding_Executed"함수에 바인드합니다. 그러나 사용자 정의 컨트롤은이를 처리해야합니다. 이것은 사용자 정의 컨트롤이 동적으로 만들어지기 때문에 더 많은 문제이며 100 개 정도의 사용자 지정 명령 중 처리 할 수있는 명령을 알지 못합니다. – Sprotty

관련 문제