Как узнать, куда перемещается фокус в моем приложении WPF?

В моем приложении WPF есть экран поиска. Экран реализован как UserControl в TabItem TabControl. Когда пользователь переключается на вкладку «Поиск», я хочу, чтобы фокус переместился в одно конкретное поле.

Итак, я добавил обработчик событий Loaded в тег UserControl в Xaml и вызвал метод Focus элемента управления, который я хочу получить в обработчике событий Loaded. Это прекрасно работало, пока я не обновил библиотеку управления Telerik, которую использую сегодня. Теперь, когда я переключаюсь на вкладку «Поиск», фокус находится НЕ в том поле, которое я хочу иметь, но я не могу сказать, какой элемент управления имеет фокус.

Поле, которое я хочу сфокусировать, уже имеет обработчики событий GotFocus и LostFocus по другим причинам. Я вспомнил, что в Win Forms аргументы обработчика событий LostFocus говорят вам, какой элемент управления получит фокус. Поэтому я поставил точку останова в своем обработчике LostFocus и обнаружил, что аргументы обработчика событий LostFocus в WPF не включают эту информацию.

Как определить, куда перемещается фокус, не устанавливая обработчики GotFocus для каждого элемента управления в моем UserControl?

Тони

7
задан Tony Vitabile 30 March 2012 в 00:12
поделиться