Я следил за this question, и он работает хорошо, но он убирает фокус с моего передающего элемента управления.WPF: Как я могу отправить клавиши на другой элемент управления, не отвлекаясь от целевого элемента управления.
Что я пытаюсь сделать, так это создать поле ввода, которое будет работать как текстовое поле с автозаполнением - текстовое поле и элемент управления всплывающим меню, содержащий список соответствующих элементов. Мне нужно иметь возможность брать ключи, такие как «Вверх», «Вниз», «Направить» и «Направить» на панель управления всплывающим меню, а также взять другие клавиши и сохранить их в текстовом поле.
switch (e.Key)
{
case Key.Down:
{
if (!popup.IsOpen)
{
openPopup();
}
else
{
PresentationSource source = PresentationSource.FromVisual(itemList);
if (source == null) return;
itemList.RaiseEvent(
new KeyEventArgs(Keyboard.PrimaryDevice, source, 0, e.Key)
{RoutedEvent = Keyboard.KeyDownEvent});
}
break;
}
}
ITEMLIST выше, является контроль, который pop'd и фокус получает переданы, как только я называю RaiseEvent.