我有一些 RoutedCommands 用于控制 A、复制粘贴等命令,它们都可以正常工作。然后我添加了 4 个路由命令来使用箭头键在画布中左右上下移动对象,它们有时有效,有时无效。起初我认为这是画布上的焦点问题,但我发现同时,所有其他路由命令(如 control-A)都有效,但箭头键无效。我真的不知道这里发生了什么,它们是具有不同变量名的相同路由命令,为什么一个工作 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 有时只是不触发,尤其是在我打开其他窗口并返回画布后,它会停止触发,而其他路由命令不受影响。任何想法是什么导致了这种奇怪的行为?