Как ограничить фокус на элементе управления в WPF

1

У меня есть Page содержащая некоторые элементы управления, эта страница будет загружена в ContentControl в Window.

Теперь, как я могу ограничить цикл фокусировки на моей Page? Я не хочу передавать фокус из Page после нажатия TAB в последнем элементе моей страницы.

Как краткое описание, как определить следующий контроль фокусировки и изменить его

  • 0
    Что вы пробовали?
  • 0
    Ах, какой маленький вопрос с ОГРОМНЫМ ответом. в качестве примера: 1. Установка Focusable в false для всех других элементов управления, кроме Page , но тогда она не фокусируется на самой Page . потому что он содержится в окне. 2. Динамически изменяя TabIndex для всех других элементов управления за TabIndex Page . Это не работает, потому что TabIndex имеет значение в любом случае! 3. так больше, но у меня нет свободного английского, чтобы описать их.
Показать ещё 2 комментария
Теги:
wpf

2 ответа

1
Лучший ответ

Всегда трудно понять, чего хочет автор вопроса, когда они не удосужились предоставить вам более чем несколько поспешно напечатанных строк. Однако, насколько я понимаю вашу проблему, кажется, что у вас есть проблемы с фокусировкой в вашем приложении WPF.

Первое, что вам нужно сделать, - направить вас на страницу " Обзор фокуса" в MSDN, где вы можете узнать о различных типах фокусов, используемых в WPF. В частности, обратите внимание на программный раздел "Навигационный фокус", в котором обсуждается класс TraversalRequest который может помочь разработчикам программно перемещать фокус.

Вы также должны обратить особое внимание на раздел KeyboardNavigation, в котором рассматривается класс KeyboardNavigation. Этот класс содержит некоторые свойства, которые позволяют вам определить, как работает клавиша Tab в разных сценариях, так что это может быть то, что вам нужно. Он используется как это (с последней связанной страницы в MSDN):

KeyboardNavigation.SetTabNavigation(navigationMenu, KeyboardNavigationMode.Cycle);

Для справок в будущем вы получите более быстрые и более точные ответы, если вы дадите четкие вопросы, которые включают все ваши требования во время публикации.

  • 0
    Я могу сказать огромное СПАСИБО !!! это то, что я искал. возможно, если бы я написал «Цикл», было бы легко ответить. однако действительно спасибо.
0

Вы пробовали смотреть на событие FocusLost - возможно, вам удастся переориентировать управление страницей с помощью обработчика событий.

private void Page_LostFocus(object sender, System.Windows.RoutedEventArgs e)
    {
        ((UIElement)sender).Focus();
    }
  • 0
    Да, но это не работает.
  • 0
    Похоже, вы все равно получили рабочий ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню