在程序应用中,往往会使用某些快捷键来提升用户的使用体验。比如设置快捷键Y进行界面跳转。那么实际应用中问题是,某个界面有文本框TextBox,已设置快捷键的前提下,在文本框键入Y,会优先触发快捷键事件,且文本框不会添加Y值。
那么需求就变成了,在该界面有快捷键Y,且做文本框输入操作时不启用快捷键。利用CanExecute事件就可以了。当焦点在TextBox时,取消快捷键执行。
代码如下:
private void CommandBinding_CanExecute(object sender, System.Windows.Input.CanExecuteRoutedEventArgs e)
{
e.CanExecute = !(e.ContinueRouting = (System.Windows.Input.Keyboard.FocusedElement is TextBox));
}