여러 개의 수식 키를 사용한WPF에서의 KeyBinding 작성
내가 만든 방법KeyBinding
다음과 같은 것이었죠.
<KeyBinding Modifiers="Ctrl" Key="S" Command="{Binding SaveCommand}" />
하지만 수식 키가 두 개 필요했다면?예를 들어 + 입니다.
문서에는 수식자를 다음과 같이 구분하기만 하면 된다고 기술되어 있습니다.+
캐릭터:
<KeyBinding Modifiers="Ctrl+Shift" Key="S" Command="{Binding SaveCommand}" />
링크가 사라졌을 경우에 대비하여 아래의 관련 비트를 추출하여 자세한 내용은 여기를 참조하십시오.
XAML
<object property="oneOrMoreModifierKeys"/>
XAML 값
oneOrMoreModifierKeys
: 에 의해 정의되는1개 또는 여러 개의 수식 키ModifierKeys
열거형, 구분자:+
성격.
키/수식자 콤보가 아닌 제스처 자체를 사용할 수도 있습니다.
<KeyBinding Gesture="Ctrl+Shift+S" Command="{Binding SaveCommand}" />
동일한 문서 링크에 따라 다음을 수행합니다.
XAML에서 KeyBinding을 정의할 때 KeyGesture를 지정하는 방법은 두 가지가 있습니다.
XAML에서 KeyBinding을 확립하는 첫 번째 방법은 KeyBinding 요소의 제스처 속성을 정의하는 것입니다.이것에 의해, 구문은 「CTRL+P」등의 키와 수식자를 단일 문자열로서 지정할 수 있습니다.
두 번째 방법은 KeyBinding 요소의 Key Atribut과 Modifiers Atribut을 정의하는 것입니다.
KeyGesture를 설정하는 두 가지 방법은 동일하며 동일한 기본 개체를 수정하지만 둘 다 사용할 경우 충돌이 발생합니다.Key, Modifiers 및 Gesture Atribut이 모두 설정되어 있는 경우 마지막으로 정의된 Atribut이 KeyGesture에 사용됩니다.
<KeyBinding Command="{Binding SaveCommand}"
Gesture="Ctrl+Shift+S" />
MSDN 의 메뉴얼 「KeyBinding Class」를 참조해 주세요.
XAML에 관한 질문인 것은 알고 있습니다만, 코드로 실시하는 경우의 예를 다음에 나타냅니다(논리 OR을 통해 복수의 Modifier Key를 지정할 수 있습니다).
new KeyBinding( SaveCommand, Key.S, ModifierKeys.Control | ModifierKeys.Shift )
WPF MVVM에서 + +와 같은 여러 문자 바로 가기 키를 구현하기 위한 코드입니다.
이것을 XAML 에 추가합니다(KeyDown 이벤트의 접속 동작).
cb:ShortCutBehavior.Command="{Binding Shortcuts.CmdKeyPressed}"
뷰 모델에 추가:
ShortCuts Shortcuts = new ShortCuts( this );
//Add Plenty of shortcuts here until your heart is desired
Shortcuts.AddDoubleLetterShortCut( AddOrganization, Key.P, Key.A, ModifierKeys.Alt, true);
Shortcuts.AddSingleLetterShortCut( CmdAddNewAgreement, Key.A, ModifierKeys.Alt);
다음은 바로 가기를 추가하는 두 가지 예입니다.첫 번째 숏컷은 + +로 Add Organization() 메서드를 실행하고 두 번째 숏컷은 +로 ICommand CmdAddNewAgreemnt를 실행합니다.
Add Double Letter ShortCut 및 Add Single Letter ShortCut이 모두 오버로드되어 액션 또는 ICommand를 수락합니다.
이것은 제가 처음 시도하는 어떤 것의 생성 중 하나이기 때문에, 당신은 아이디어를 가지고 그것을 당신에게 적합하게 만들 수 있습니다.
너무 늦었을 수도 있지만 여기 가장 간단하고 짧은 해결책이 있습니다.
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.S)
{
// Call your method here
}
}
<Window x:Class="Test.MainWindow" KeyDown="Window_KeyDown" >
언급URL : https://stackoverflow.com/questions/4050066/creating-keybinding-in-wpf-with-more-than-one-modifier-key
'source' 카테고리의 다른 글
bash 스크립트가 실행 중일 때 출력을 파일로 강제 플러시합니다. (0) | 2023.04.12 |
---|---|
WPF에서의 바인딩을 위한 내부 제어 속성 노출 (0) | 2023.04.12 |
C#을 사용하여 Excel 파일의 데이터를 읽는 방법 (0) | 2023.04.12 |
EXISTES를 직접 선택할 수 있습니까? (0) | 2023.04.07 |
ID 열 값을 프로그래밍 방식으로 변경하려면 어떻게 해야 합니까? (0) | 2023.04.07 |