Предотвратить вкладку клавиатуры за контролем загрузки - PullRequest
0 голосов
/ 14 сентября 2018

Я использую элемент управления Windows Community ToolKit Loading.Я установил Background="Transparent", чтобы предотвратить нажатие указателя на элементы пользовательского интерфейса за элементом управления загрузкой, но все же я могу использовать вкладку клавиатуры, чтобы установить фокус на элементы управления пользовательского интерфейса за элементом управления.Есть ли простой / изящный способ предотвратить вкладку клавиатуры в такие элементы управления?

  • Я мог бы использовать IsEnabled на элементе управления панели / контейнера, но мне не нравится стиль отключенного элемента и я не хочу изменять стиль всех элементов управления в отношении IsEnabled презентация.

  • Я пробовал IsTabStop, но затем мне нужно обернуть мою панель / контейнер в usercontrol/contentcontrol, и IsTabStop не наследуется детям.Я не хочу устанавливать IsTabStop на всех элементах управления за оверлеем загрузки.

Я искал информацию о некоторых свойствах, связанных с фокусом, но не нашел ничего, что мог быиспользовать.

Надеюсь, у кого-нибудь есть умное решение моей проблемы

1 Ответ

0 голосов
/ 18 сентября 2018

По вашему требованию вы можете обработать PreviewKeyDown текущего содержимого, а затем определить Tab нажатой клавишу set e.Handled = true.

Window.Current.Content.PreviewKeyDown += Content_PreviewKeyDown;

private void Content_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{        
    e.Handled = e.Key == VirtualKey.Tab ? true : false;
}

Код вышеигнорирует нажатие Tab в текущем содержимом.

...