Итак, я использую третий элемент управления сеткой wpf, который жестко запрограммирован, чтобы принимать только определенные нажатия клавиш для выполнения быстрых реакций, и одним из них является Shift-Tab.
Тем не менее, моя пользовательская база привыкла нажимать стрелки вверх и вниз, и говорить им «нет» сейчас не вариант. Поэтому я думаю, что мой единственный вариант - перехватить клавишу предварительного просмотра и отправить другую комбинацию нажатий клавиш.
Теперь я использую следующий код, который я нашел здесь, чтобы отправить вкладку, когда пользователь нажимает стрелку вниз:
if (e.Key == Key.Down)
{
e.Handled = true;
KeyEventArgs eInsertBack = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, Key.Tab);
eInsertBack.RoutedEvent = UIElement.KeyDownEvent;
InputManager.Current.ProcessInput(eInsertBack);
}
Однако этот метод ограничен в том, что вы не можете имитировать нажатие кнопки Shift? WPF, похоже, смотрит на Keyboard.Modifiers, чтобы иметь возможность «читать» Shift или Ctrl, но, похоже, нет никаких средств для установки Keyboard.Modifiers программно. Любая помощь там?