CommandBinding
〜RoutedUICommand
を私のアプリケーションに広く使用しています。それらのほとんどには、グローバルに機能するキーボードショートカットがあります。WPF RoutedUICommand:ショートカットとして登録されているキーを「入力」する方法を教えてください。
いくつかのコマンドでは、修飾キーを使わずにシングルキーショートカットを使用したいと思います。たとえば、キーパッド '+'(Key.Add
)です。テキスト入力コントロール(たとえば、TextBox
)にフォーカスが当たっても、グローバルコマンドが引き続き優先され、キーが消費され、入力が許可されず、代わりにコマンドが実行される点を除いて、これはすべて正常です。しかし、そのような状況でキーを入力し、コマンドのショートカットをブロックしたいと思っています。
これを実現する方法はありますか?
いいえ、両方の方法が機能しません。 'CanExecute'が偽証されたか、または' Executed'が処理されなかったことを通知されたとしても、キー押下は消費されます。 (さらに、 'Keyboard.FocusedElement'は、キーを処理する必要のない他の多くの要素、例えば' RadioButton'に正当に設定できます)。 私がこれまでに見つけた回避策は、問題のコマンドを関連するパネルまたはウィンドウやアプリケーション全体ではなく編集可能なフィールドを含んでいない他の要素(私の場合は 'TabItem')にバインドすることです。これは普遍的な解決策ではありませんが、実際のほとんどの場合に有効です。 – Zeus