Всплывающие окна в XBAP перестают получать что-либо кроме событий мыши после потери фокуса? - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть элемент управления Popup в моей XBAP, и всякий раз, когда всплывающий элемент управления открыт и теряет фокус (например, окно предупреждения, точка останова, переключение на другое приложение в Windows, переключение на другую вкладку в моем веб-браузере и т. д.), всплывающее окно больше не реагирует ни на что, кроме событий мыши.

Я не могу:

  • Выберите TextBox с помощью мыши
  • Выделение текста в текстовом поле мышью
  • Используйте клавишу Tab для изменения элементов управления
  • Выберите элемент ComboBox с помощью клавиатуры, когда я открываю его с помощью мыши

Я могу:

  • Изменение значения ComboBox с помощью мыши
  • Нажмите кнопку с мышью

1 Ответ

1 голос
/ 21 сентября 2011

Ближайшая вещь, которую я смог найти, была http://social.msdn.microsoft.com/Forums/en/wpf/thread/cd723315-187f-4d8b-a97d-6aac38a2ed1f

Программист терял фокус на своем всплывающем окне и никогда не мог его вернуть. По словам сторонника Microsoft. «похоже, вы столкнулись с известной ошибкой, связанной с Popup в XBAP.»

Вы можете увидеть, похоже ли это на вашу проблему, но проблема так и не была решена. OP закончил тем, что добавил холст на главную страницу и пользовательский контроль, чтобы заменить всплывающее окно.


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

В логическом фокусе существует понятие «сфера фокусировки», которое представляет собой определяемую приложением границу вокруг группы элементов UIElements. Каждый Focus Scope поддерживает свой собственный «сфокусированный элемент», который может отличаться от элемента с фокусом клавиатуры.

...