WPF에서 KeyBinding
을 사용하여 Alt+D
키 조합 같은 단축키를 처리하려면 Window.InputBindings
에서 KeyBinding
을 설정하고 이를 명령에 바인딩할 수 있습니다. 방법은 다음과 같습니다.
MainWindow.xaml
1 2 3 4 5 6 7 8 9 10 11
| <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.InputBindings> <KeyBinding Key="D" Modifiers="Alt" Command="{Binding AltDCommand}" /> </Window.InputBindings> <Grid> <TextBlock x:Name="OutputTextBlock" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"/> </Grid> </Window>
|
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| using System; using System.Windows; using System.Windows.Input;
namespace WpfApp { public partial class MainWindow : Window { public ICommand AltDCommand { get; }
public MainWindow() { InitializeComponent(); AltDCommand = new RelayCommand(ExecuteAltD); DataContext = this; }
private void ExecuteAltD(object parameter) { OutputTextBlock.Text = "Alt+D was pressed!"; } }
public class RelayCommand : ICommand { private readonly Action<object> execute; private readonly Predicate<object> canExecute;
public RelayCommand(Action<object> execute, Predicate<object> canExecute = null) { this.execute = execute ?? throw new ArgumentNullException(nameof(execute)); this.canExecute = canExecute; }
public bool CanExecute(object parameter) => canExecute == null || canExecute(parameter);
public void Execute(object parameter) => execute(parameter);
public event EventHandler CanExecuteChanged { add => CommandManager.RequerySuggested += value; remove => CommandManager.RequerySuggested -= value; } } }
|
설명
1. MainWindow.xaml
Alt+D
에 대한 KeyBinding
을 정의하고 이를 AltDCommand
에 바인딩합니다.
Alt+D
를 누를 때 메시지를 표시하기 위해 OutputTextBlock
이라는 TextBlock
을 포함합니다.
2. MainWindow.xaml.cs
RelayCommand
를 사용하여 AltDCommand
를 정의합니다.
ExecuteAltD
메서드는 Alt+D
를 누르면 TextBlock
텍스트를 업데이트합니다.
- 'DataContext’를 현재 인스턴스로 설정하여 바인딩을 활성화합니다.
3. RelayCommand
- 명령 논리를 처리하기 위해 'ICommand’를 구현합니다.
RelayCommand
클래스는 Action<object>
를 사용하여 실행하고 선택적 Predicate<object>
를 사용하여 명령을 실행할 수 있는지 확인합니다.
결론
이 접근 방식은 WPF의 ‘KeyBinding’ 및 ‘Command’ 인프라를 활용하여 ‘Alt+D’ 키 조합을 처리하고 키 누름에 응답하는 깔끔하고 선언적인 방법을 제공합니다.