Нестабильный фокус приложений WPF
Если у меня проблемы с WPF, то это всегда касается Focus-Management. Бывают случаи, когда мое приложение теряет полную фокусировку, поэтому другое приложение получает фокус, а мое приложение уходит в фоновый режим. Это происходит в основном, если некоторые окна в моем приложении будут закрыты. Это известная проблема WPF. У кого-то еще есть подобные проблемы?
Я уже открыл другую ветку к этому, но никто не мог помочь, может быть, это было немного к деталям. Поэтому это здесь короткая версия.
ОБНОВИТЬ
Кажется, я нашел простой взлом, который помогает предотвратить поведение, которое я описываю в другой теме. Если у вас возникла такая же проблема, попробуйте, если она вам поможет. Если у вас есть объяснение, есть щедрость, открытая для...
Я оставляю этот пост открытым в течение нескольких дней, может быть, у кого-то есть хороший общий вклад в проблематику WPF-фокуса. Возможно, я не понимаю логику, стоящую за этим, но пока я не пойму, это IMO действительно худшая часть WPF (что IMO действительно фантастический продукт). Если мне придется рассказать кому-то о том, с какими проблемами у меня были последние годы в рамках WPF, это будет: Focusmgmt, Focusmgmt и еще раз Focusmgmt.
2 ответа
Чтобы потерять фокус для всего приложения, убедитесь, что вы установили свойство Owner во всех окнах, прежде чем показывать их.
Чтобы потерять фокус внутри приложения, обычно это происходит, когда какой-то элемент управления, о котором вы не подумали, получает, но ничего не показывает (например, какой-то случайный StackPanel или Grid, используемый для разметки), вы должны найти его и добавить Focusable="false"
+1 Так же я сталкивался с похожими проблемами в своем приложении. Я работаю над VS-подобным приложением (пользователь может добавлять (из панели инструментов) и настраивать элементы управления в Canvas), и фокус таинственным образом теряется после выполнения различных комнад, таких как Delete и т. Д. Я должен использовать Canvas.Focus()
явно сбросить фокус, и это тоже иногда не работает.