有没有办法在XAML中使用KeyBinding
并在OnKeyUp上执行命令?
如果我想绑定left-ALT键来执行我自己的菜单访问命令,因为KeyBinding在OnKeyDown上执行命令,我会得到一些不需要的行为。例如,当使用Alt+Tab
标记出应用程序时,将触发该命令,如果按住该键,则会重新触发该命令,直到释放该键为止。
我知道ALT是一个修饰键,有点特殊情况,但是通过等待OnKeyUp可以避免这些问题。
答案 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;
}