Какие-либо подсказки относительно отладки фокуса выходят в WPF?

А именно, у меня есть кнопка, которая открывает немодальное дочернее окно. Что-то в главном окне крадет фокус далеко от дочернего окна, когда это открывается.

Полностью общий подход должен прокомментировать части кода, пока проблема не уходит. Я ищу более быстрые методы.

11
задан akjoshi 30 March 2012 в 05:40
поделиться

5 ответов

Вы можете попытаться отслеживать вызовы метода System.Window.UIElement.Focus (в PresentationCore.dll) в контексте вашего приложения, используя Runtime Flow (разработан мной).

0
ответ дан 3 December 2019 в 03:51
поделиться

Вы можете попробовать использовать такой инструмент, как UI Spy или Snoop, чтобы следить за событием, которое меняет фокус. Я не использовал эти инструменты для этой цели, но полагаю, что они могут вам помочь.

0
ответ дан 3 December 2019 в 03:51
поделиться

Не могли бы вы упомянуть основные операции (не вдаваясь в специфику клиента - если это клиентский проект) - например, есть ли какие-либо события, подключенные к элементам, любые другие операции, происходящие при нажатии на кнопку - все, что происходит для любого элемента в родительском окне после отображения дочернего окна, которое крадет фокус. Также проверьте все связанные события, которые происходят во время нажатия кнопки.

Вот некоторые из способов, с которых вы можете начать свое расследование.

0
ответ дан 3 December 2019 в 03:51
поделиться

Я сам не пробовал поэтому не могу сказать точные шаги, но вы можете попробовать использовать FocusManager.FocusedElement и FocusManager.GetFocusedElement Method , чтобы попытаться найти элемент, крадущий фокус из вашего дочернего окна.

Другая полезная ссылка -

Обзор фокуса (Есть код для получения сфокусированный элемент): http://msdn.microsoft.com/en-us/library/aa969768.aspx # Focus_Events

0
ответ дан 3 December 2019 в 03:51
поделиться

Я только что прочитал о каком-то тупике ... надеюсь, это поможет (ищите control.leave на msdn.microwoft.com

Внимание! Не пытайтесь установить фокус из обработчиков событий Enter, GotFocus, Leave, LostFocus, Validating или Validated. Это может привести к тому, что ваше приложение или операционная система перестанут отвечать. Для получения дополнительной информации см. Тему WM_KILLFOCUS в разделе «Справочник по вводу с клавиатуры» и раздел «Тупиковые ситуации для сообщений» в теме «О сообщениях и очередях сообщений» в библиотеке MSDN по адресу http://msdn.microsoft. com / library .

0
ответ дан 3 December 2019 в 03:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: