У меня есть несколько RoutedCommands для таких команд, как control-A, copy paste, и все они работают нормально.Затем я добавил еще 4 перенаправленные команды для перемещения объекта вверх и вниз по холсту с помощью клавиш со стрелками, иногда они работают, а иногда нет.Сначала я подумал, что это проблема Focus на Canvas, но я только что узнал, что в то же время все другие перенаправленные команды, такие как control-A, работают, но стрелки не работают.Я действительно понятия не имею, что здесь происходит, они являются идентичными маршрутизируемыми командами с разными именами переменных, как получается, что одна работает 100% времени, а одна работает только 50% времени?
Рабочая RoutedCommand:
_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 просто не запускается, особенно после того, как я открою другое окно и вернусь на холст, он прекратит работу, в то время как другие маршрутизируемые команды остаются без изменений.Есть идеи, что вызывает это странное поведение?