У кого-нибудь есть хороший способ отладки фокуса WPF? - PullRequest
5 голосов
/ 05 мая 2009

Я собираюсь сосредоточиться на аду прямо сейчас в своем приложении WPF. Фокус перемещается между элементами и, по-видимому, исчезает только для того, чтобы подойти к другому элементу при многократном нажатии клавиши табуляции.

Есть ли свойство, к которому я могу привязать метку, или что-то, что просто скажет мне, какого черта зацепился фокус клавиатуры в то время? Иногда я вижу след муравья (пунктирная линия), указывающий, что у чего-то есть фокус, но я не могу сказать, что вокруг него, чтобы отключить фокус клавиатуры!

Ответы [ 4 ]

2 голосов
/ 06 мая 2009

Что вы, вероятно, ищете:

(System.Windows.Input.Keyboard.FocusedElement as FrameworkElement). Имя

Вам нужно будет настроить для него свойство DependencyProperty, чтобы вы могли связываться с ним.

Vaccano

0 голосов
/ 31 октября 2010

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

http://julmar.com/blog/programming/part-1-its-basically-focus/

0 голосов
/ 06 мая 2009

Может быть, вы могли бы попытаться установить правильные значения для свойства TabIndex элементов управления? Это должно заставить фокус «перепрыгнуть» через «путь», по которому вы хотите прыгнуть при нажатии Tab.

0 голосов
/ 06 мая 2009

Проблемы с фокусировкой могут быть очень сложными для анализа, так как почти все, что вы делаете с отладчиком, влияет на фокус.

  • Копия spy ++ , поставляемая с Visual Studio, покажет вам события, идущие на различные контроль; это может помочь.
  • Вы можете записывать события фокуса и потери фокуса в другое место (например, элемент управления списком в другом окне). Или даже установите текущий заголовок окна на имя текущего объекта с фокусом. Тогда вы можете получить представление о том, что в данный момент имеет фокус.

Лучший вопрос, который нужно задать, - почему фокус прыгает? Вы явно устанавливаете фокус? Может быть, небольшая подсказка о вашей реализации (т. Е. Какой контейнер (ы) вы используете) может помочь нам ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...