WPF路由命令有时仅触发
我有一些RoutedCommands用于控制-A,复制粘贴等命令,它们都可以正常工作。
然后我添加了4个routedcommands来使用arrowkeys在画布中左右移动对象,它们有时会工作,有时则不会。起初我认为它是Canvas上的Focus问题,但我发现同时,所有其他路由命令(如control-A)都可以,但是arrowkeys却没有。
我真的不知道这里发生了什么,它们是相同的路由命令,具有不同的变量名称,为什么一个工作100%的时间,一个只工作50%的时间?
工作路线命令:
_bindings.Add(new CommandBinding(DesignerCanvas.SelectAll, SelectAll_Executed));
SelectAll.InputGestures.Add(new KeyGesture(Key.A, ModifierKeys.Control));
private void SelectAll_Executed(object sender, ExecutedRoutedEventArgs e)
{
SelectionService.SelectAll();
}
RoutedCommand出现故障:
_bindings.Add(new CommandBinding(DesignerCanvas.MoveDown, MoveDown_Executed));
MoveDown.InputGestures.Add(new KeyGesture(Key.Down));
private void MoveDown_Executed(object sender, ExecutedRoutedEventArgs e)
{
e.Handled = true;
var selectedItems = from item in SelectionService.CurrentSelection.OfType<DesignerItem>()
select item;
if (selectedItems.Count() > 0)
{
for (int i = 0; i < selectedItems.Count(); i++)
selectedItems.ElementAt(i).Top += Option.OptionSingleton.Sensitivity;
}
}
发生故障的RoutedCommand有时不会触发,特别是在我打开其他窗口然后回到画布后,它将停止触发,而其他路由命令不受影响。是什么导致了这种奇怪的行为?
没有找到相关结果
已邀请:
3 个回复
桔马牛
在你的情况下,KeyDown可能会在它到达命令绑定之前被处理,或者
事件可能由于某些其他原因而无法到达它。 希望这可以帮助您调试问题
糖固傻染
珊畴炮贩号