1

KeyBindingXAML の OnKeyUp でコマンドを使用して実行する方法はありますか?

左の ALT キーをバインドしてメニュー アクセス用の独自のコマンドを実行する場合、KeyBinding は OnKeyDown でコマンドを実行するため、望ましくない動作が発生します。たとえばAlt+Tab、コマンドを使用してアプリケーションからタブ移動すると起動し、キーを押したままにすると、キーが離されるまでコマンドが再トリガーされます。

ALT が修飾キーであり、少し特殊なケースであることは知っていますが、OnKeyUp を待つことでこれらの問題を回避できます。

4

1 に答える 1

2

私は通常、コマンドをイベントに接続するためにこの添付コマンド動作を使用します

特定のキーの組み合わせが押されたときにのみコマンドを実行したいという特殊なケースでは、KeyUpイベントとKeyUp添付コマンドの両方を接続することをお勧めします。

通常のKeyUpイベントでは、必要なキーの組み合わせが押されているかどうかを確認し、押されていない場合はHandled、コマンドによって処理されないようにイベントにマークを付けます

たとえば、これはAキーが押された場合にのみバインドされたコマンドを実行します

<TextBox acb:CommandBehavior.Command="{Binding TestCommand}"
         acb:CommandBehavior.Event="KeyUp"
         KeyUp="TextBox_KeyUp"/>

private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
    if (e.Key != Key.A)
        e.Handled = true;
}
于 2012-06-19T13:03:21.523 に答える