2010-08-12 2 views
4

WPF KeyGesture 클래스의 도움으로 일부 WPF 명령을 실행하려고합니다. 응용 프로그램은 Shift 수정 자와 영숫자 키로 구성된 키 조합을 지정할 때까지 잘 작동합니다. 예를 들어, 인스턴스 다음KeyGesture가 Shift + 영숫자 키 조합을 허용하지 않습니다.

'Shift + M'키 개질제 조합 KeyGesture 지원되지 않습니다 new KeyGesture(Key.M, ModifierKeys.Shift) 예외가 발생.

베어 시프트 수정 (예를 들어 시프트 + 2) 너무 숫자가 작동하지 않습니다. 그러나 시프트 + 또는 시프트 + 조합이 완벽하게 작동합니다. 그냥 명확 넣어, 시프트 + Ctrl 키, 시프트 + Alt 키 또는 Alt 키 + 1 및 모두에 문제가 없습니다.

왜 금지 결정을 내렸습니까 시프트 + [영숫자] 제스처? 대문자를 입력하는 것과 공통점이 있습니까? WPF 명령 시스템과 일관된 해결 방법이 있습니까? (참고 :. 텍스트 상자를 작성하는 동안 내가하는 시프트 + M 제스처를 사용하려고 아니지만, 오히려 텍스트 상자에 포커스가 없을 때는)

나는 단 하나 개의 포럼을 찾을 수가 이 문제가 제기 된 항목 문서 검색에 실패했습니다. 개발자들이 피하는 것이 아주 당연한가 Shift + [영숫자]?

+1

도대체 더 이상입니까? 왜? 나는이 문제에 대해 머리를 맞췄다. 문제는 레거시 (읽기 : 돈 만들기) 응용 프로그램에서 기능을 복제하려고합니다. –

+0

@lainMH : 음,이 문제에 대한 지식은이 질문을 게시 한 시점에서 변하지 않았습니다. 대부분의 응용 프로그램에서 텍스트 삽입과 충돌하기 때문입니다. 창 수준에서 Shift + 키 조합을 처리 할 수 ​​있습니다. 그러나 더 나은 솔루션은 Shift + 키 제스처를 피하는 것입니다. 특별한 경우에만 작동하기 때문입니다. 텍스트 상자에 포커스가있는 경우 키 입력은 문자 입력으로 만 처리됩니다. 따라서 Shift + 키에 바인딩 된 명령은 수시로 작동하여 고객을 미친 듯이 유도 할 수 있습니다. – pbalaga

답변

3

는 SO 8251043을 참조하십시오 없습니다 - 기본적으로는 "제스처"자사의 키 바인딩 Create a simple, unmodified key binding in WPF

+0

작동합니다. 고맙습니다. 참으로 수치 스럽습니다. 아무 데서도 문서화되지 않은 것으로 보입니다. 추가주의 사항 - 키와 수정자는 반드시 속성 할당 (SO 8251043에 나와 있음)을 통해 설정되어야하며 생성자에 전달되지 않습니다. 후자의 경우 'KeyGesture'로 변환되어 실패합니다. – pbalaga

관련 문제