2010-07-13 2 views
2

Если у меня проблемы с WPF, это всегда касается Focus-Management. Есть случаи, мое приложение полностью теряет фокус, так что другое приложение получает фокус, а мое приложение идет в фоновом режиме. Это происходит в основном, если некоторые окна в моем приложении будут закрыты. Является ли это известной проблемой WPF. У кого-то еще есть подобные проблемы?Нестабильный фокус приложений WPF

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

UPDATE

кажется, что я нашел простой хак, который помогает предотвратить поведение я описываю в other thread. Если у вас такая же проблема, попробуйте, если это вам поможет. Если у вас есть объяснение, есть щедрота, открытая для ...

Я оставляю это сообщение открытым для нескольких дней, может быть, у кого-то есть хороший общий вклад в проблематику WPF-focus. Вероятно, я не понимаю логики этого, но пока я не пойму, это ИМО действительно самая худшая часть WPF (что ИМО - действительно фантастический продукт). Если мне нужно рассказать кому-то о том, что у меня были проблемы в последние годы в WPF, это были бы: Focusmgmt, Focusmgmt и еще один раз Focusmgmt.

+0

WAG здесь: Измените клавиатуру/мышь. Если у вас есть сенсорный экран, исследуйте производителя для призрачных кликов. Если вы находитесь на ноутбуке, обновите драйверы пэдов или полностью отключите его. – Will

ответ

2

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

Для потери фокуса внутри приложения, как правило, это происходит, когда какой-то элемент управления, о котором вы не думали, получает, но не показывает ничего (например, некоторые случайные StackPanel или Grid, используемые для макета), вы должны искать их и добавлять Focusable="false"

+0

Спасибо за подсказку. Я дважды проверил это, но я всегда устанавливал владельца, прежде чем показывать окно. Я также попытался установить владельца как абсолютно первое свойство после построения окна, но это не помогает. – HCL

+0

Я принял ваш ответ, потому что это была хотя бы попытка. Если вас интересует решение, см. Мои изменения в сообщении - Спасибо за ответ – HCL

1

+1 Как и в моем приложении, у меня также были проблемы с подобными проблемами. Я работаю над VS-подобным приложением (пользователь может добавлять (из панели инструментов) и настраивать элементы управления в Canvas), и фокус теряется таинственно после выполнения различных commnads, таких как Delete и т. Д. Я должен использовать Canvas.Focus() явно для сброса фокуса, и это тоже иногда не работает.

Смежные вопросы