В чем разница между фокусом клавиатуры и логическим фокусом в WPF? и чем фокус WPF отличается от фокуса в winform?

22
Firoz 24 Авг 2009 в 10:51

2 ответа

Лучший ответ

См. Обзор фокуса

Фокус клавиатуры относится к элементу, который в настоящее время получает ввод с клавиатуры. На всем рабочем столе может быть только один элемент с фокусом клавиатуры. В WPF для элемента с фокусом клавиатуры IsKeyboardFocused будет установлено значение true. Статическое свойство FocusedElement в классе Keyboard получает элемент, который в настоящее время имеет фокус клавиатуры.

Логический фокус относится к FocusManager.FocusedElement в области фокуса. Область фокуса - это элемент, который отслеживает FocusedElement в своей области. Когда фокус клавиатуры покидает область фокуса, элемент с фокусом теряет фокус клавиатуры, но сохраняет логический фокус. Когда фокус клавиатуры возвращается в область фокуса, элемент с фокусом получит фокус клавиатуры. Это позволяет переключать фокус клавиатуры между несколькими областями фокуса, но гарантирует, что элемент с фокусом в области фокуса восстанавливает фокус клавиатуры, когда фокус возвращается в область фокуса.

25
Adrian 8 Мар 2016 в 20:04

Я нашел хорошую серию сообщений в блоге о фокусе WPF.

  1. Part1ItsBasicallyFocus

  2. Part2ChangingWPFFocusInCode

  3. Part3ShiftingFocusToTheFirstAvailableElementInWPF

Все они удобны для чтения, но первая часть специально посвящена логическому и клавиатурному фокусу. Третья часть показывает хороший способ установить фокус на элемент пользовательского интерфейса в UserControl.

7
Fangliang Xue 12 Дек 2013 в 05:05
3
Эти статьи перемещены, и в настоящее время их можно найти по адресу: julmar.com/blog/mark/?p = 52 julmar.com/blog/mark/?p=51 julmar.com/blog/mark/?p=50
 – 
mtlynch
18 Авг 2011 в 05:09
7
Ответы только на ссылки подвержены гниению ссылок.
 – 
ANeves
21 Сен 2017 в 17:57
Ссылки все битые.
 – 
Travis
7 Сен 2021 в 23:02
Автор, должно быть, удалил эти сообщения.
 – 
Ashley Davis
9 Сен 2021 в 00:15