C# WPF + MVVM でキー押下処理の実装
毎回忘れる+ググってもすぐに見つからないのでメモとして残します (ReactiveProperty 使ってます) 注意: 特定のキー押下で処理を行いたい場合は、本内容ではありません。別のやり方(KeyBinding を使う)です。 (例:ESCを押下で画面を閉じる、4押下で左に移動するなど…) やりたいこと: ・WPF + MVVM で キー押下処理の実装 ・どのキーが押されたかで処理を変更する ・要するにKeyDown イベントと同じことがしたい ポイント: 「PassEventArgsToCommand="True"」これが無いとMVVMでは受信できない。 てかデフォルトtrueにしとけや と思ったり思わなかったり… デフォルトtrueにするとイベントが発生しないとかなりそうな… 実装: XAML <UserControl … xmlns:i="http://schemas.microsoft.com/xaml/behaviors" …/> <i:Interaction.Triggers> <i:EventTrigger EventName="KeyDown"> <i:InvokeCommandAction Command="{Binding KeyDownAllCommand}" PassEventArgsToCommand="True"/> </i:EventTrigger> </i:Interaction.Triggers> ViewModel: フィールド: public ReactiveCommand<KeyEventArgs> KeyDownAllCommand { get; private set; } コンストラクタ: KeyDownAllCommand = new ReactiveCommand<KeyEventArgs>().WithSubscribe(KeyDown).AddTo(Disposables); メソッド: private void KeyDown(K...