Событие TextBox LostFocus происходит слишком часто - PullRequest
3 голосов
/ 22 декабря 2011

У меня есть приложение в Silverlight и WPF. Ошибка возникает только в Silverlight, но в WPF используется тот же код.

В моем приложении есть RibbonBar, с несколькими RibbonGroups. В каждом RibbonGroup есть хотя бы один RibbonButton. Один из них RibbonGroups также содержит четыре TextBox.

Каждый TextBox имеет свой OnLostFocus -Handler. Когда я оставляю TextBox, соответствующий обработчик поднимается.

Теперь, (1) я щелкаю в один из этих текстовых полей и (2) затем нажимаю на кнопку RibbonButton, OnLostFocus поднимается, и после этого появляется раскрывающееся меню RibbonButton. Все в порядке.

После этого (3) я нажимаю на другую кнопку Ribbon. Снова поднять OnLostFocus, хотя - imho - не должно.

Так продолжается и продолжается. После каждого действия TextBox сохраняет (или возвращает обратно, не знает) фокус, и это вызывает повышение обработчика OnLostFocus.

В WPF тот же код больше не вызывает OnLostFocus. Только один раз, когда он действительно потерял фокус.

Кто-нибудь знает, почему это странное поведение в Silverlight. Что действительно отличается от WPF, возможно, мне просто нужно установить свойство, значение по умолчанию не отличающееся от WPF.

Заранее спасибо.

1 Ответ

0 голосов
/ 20 января 2012

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

Я точно не знаю причину, но подозреваю, что проблема, которую вы видите, может быть в том, что полоса ленты находится в FocusScope. Когда вы сосредотачиваете внимание на чем-то внутри области фокусировки, то, что вы в итоге получаете, может показаться, что фокус отскакивает от некоторых. Я не уверен в этом ответе, фокус очень сложен в WPF. Может помочь отправка некоторых примеров кода.

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