2016-07-04 5 views
0

CommandBindingRoutedUICommandを私のアプリケーションに広く使用しています。それらのほとんどには、グローバルに機能するキーボードショートカットがあります。WPF RoutedUICommand:ショートカットとして登録されているキーを「入力」する方法を教えてください。

いくつかのコマンドでは、修飾キーを使わずにシングルキーショートカットを使用したいと思います。たとえば、キーパッド '+'(Key.Add)です。テキスト入力コントロール(たとえば、TextBox)にフォーカスが当たっても、グローバルコマンドが引き続き優先され、キーが消費され、入力が許可されず、代わりにコマンドが実行される点を除いて、これはすべて正常です。しかし、そのような状況でキーを入力し、コマンドのショートカットをブロックしたいと思っています。

これを実現する方法はありますか?

答えて

1

CanExecuteデリゲートで、Keyboard.FocusedElementプロパティを呼び出し、ヌルでない場合はfalseを返します。理論的には、うまくいくはずです。それがうまくいかない場合は、Execute delegateで実行し、これをチェックし、e.Handledをfalseに設定します。

+0

いいえ、両方の方法が機能しません。 'CanExecute'が偽証されたか、または' Executed'が処理されなかったことを通知されたとしても、キー押下は消費されます。 (さらに、 'Keyboard.FocusedElement'は、キーを処理する必要のない他の多くの要素、例えば' RadioButton'に正当に設定できます)。 私がこれまでに見つけた回避策は、問題のコマンドを関連するパネルまたはウィンドウやアプリケーション全体ではなく編集可能なフィールドを含んでいない他の要素(私の場合は 'TabItem')にバインドすることです。これは普遍的な解決策ではありませんが、実際のほとんどの場合に有効です。 – Zeus

関連する問題