Определить, был ли получен фокус после нажатия клавиши Tab - PullRequest
1 голос
/ 20 марта 2019

Мне нужна логика для обработки события GotKeyboardFocus элемента и определения того, было ли оно вызвано клавишей Tab или каким-либо другим способом.Но я знаю, что есть только обобщенное событие GotKeyboardFocus.Как я могу определить, был ли получен фокус нажатием клавиши Tab внутри метода обработчика событий?Или есть другое событие?

1 Ответ

2 голосов
/ 20 марта 2019

Вы должны подписаться на событие GotFocus или GotKeyboardfocus, а затем проверить наличие нажатых клавиш:

<TextBox GotFocus="UIElement_OnGotFocus"/> 

В обработчике:

if (Keyboard.PrimaryDevice.IsKeyDown(Key.Tab))
{
  // Do something when Tab is pressed
}

Возможно, вам нравитсярасширить класс TextBox для обработки этого события, не подключая обработчики событий в XAML.

public class CustomTextBox : TextBox
{
  protected override void OnGotFocus (System.Windows.RoutedEventArgs e)
  {
    if (Keyboard.PrimaryDevice.IsKeyDown(Key.Tab))
    {
      // Do something when Tab is pressed
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...