我可以在KeyUp上使用KeyBinding吗?

时间:2012-06-19 10:28:56

标签: .net wpf xaml

有没有办法在XAML中使用KeyBinding并在OnKeyUp上执行命令?

如果我想绑定left-ALT键来执行我自己的菜单访问命令,因为KeyBinding在OnKeyDown上执行命令,我会得到一些不需要的行为。例如,当使用Alt+Tab标记出应用程序时,将触发该命令,如果按住该键,则会重新触发该命令,直到释放该键为止。

我知道ALT是一个修饰键,有点特殊情况,但是通过等待OnKeyUp可以避免这些问题。

1 个答案:

答案 0 :(得分:2)

我通常使用此Attached Command Behavior来连接命令到事件

在您要按下特定组合键时只执行命令的特殊情况下,我建议连接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;
}