1

有没有办法KeyBinding在 XAML 中使用和执行 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 回答