После дополнительных исследований Panel имеет фокус клавиатуры и удерживает его до тех пор, пока не будет нажата клавиша со стрелкой или клавиша TAB (которая запускает циклический фокус).
Я только что добавил обработчик для события KeyDown
с помощью e.Handled = true; и теперь все работает правильно.
Подводя итог, чтобы получить фокусируемую панель:
- добавить
FocusManager.IsFocusScope="True"
на панель
- предотвратить потерю фокуса на стрелках и клавише Tab с помощью:
myPanel.KeyDown += new KeyEventHandler(
delegate(object sender, KeyEventArgs e)
{
if (e.Key == Key.Left ||
e.Key == Key.Up ||
e.Key == Key.Right ||
e.Key == Key.Down ||
e.Key == Key.Tab)
e.Handled = true;
}
);
Наконец, дайте ему фокус с myPanel.Focus();
.