WPF KeyboardFocus Всплывающая проблема - PullRequest
0 голосов
/ 28 января 2010

У меня проблема с фокусом клавиатуры . Вот как это работает сейчас (не правильно):

  1. TextBox
  2. MyControl
  3. если MyControl.PopupShowed тогда GOTO 1. остальное GOTO 4.
  4. ComboBox

Я хочу, чтобы Popup Close продолжал фокусироваться на последней вкладке, что означает переход с 3 на 4.

Как я могу это сделать, пожалуйста?

<Window>
...
<TextBox />

<MyControl>
  ...
  <Popup>
  </Popup>
</MyControl>

<ComboBox />
...
</Window>


FocusableProperty.OverrideMetadata(typeof(ListPicker), new FrameworkPropertyMetadata(true));

1 Ответ

1 голос
/ 28 января 2010

Вот один из способов сделать это. Если он не совсем подходит для вашего случая, вы можете настроить его под свои нужды. Установите обработчик события для нажатия клавиши (возможно, в окне). Если вы обнаружите, что событие обрабатывается при нажатии клавиши табуляции, используйте клавишу предварительного просмотра вниз.

internal void OnKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Tab && MyControl.PopupShowed)
        {
            MyControl.ClosePopup()
            window.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            e.Handled = true;
        }
    }
...