У меня есть кнопка, которая при нажатии открывает всплывающее окно. Всплывающее окно - это подменю, содержащее больше кнопок. При нажатии одной из кнопок в подменю всплывающее окно закрывается. Я также хочу, чтобы всплывающее окно закрывалось, когда пользователь щелкает где-то за пределами всплывающего окна. Также важно отметить, что большую часть экрана занимает WindowsFormsHost, который отображает элемент управления OpenGL Win Forms.
Я смог закрыть всплывающее окно при нажатии кнопки подменю. В обработчике кликов для этих кнопок я закрываю Popup. Однако закрытие всплывающего окна при нажатии в другом месте - вот где я столкнулся с проблемой.
Вещи, которые я пробовал:
Установка PopUp.StaysOpen на false. Это работает так, что при нажатии в другом месте экрана всплывающее окно закрывается. Однако в элементе управления Win Forms, похоже, требуется щелчок, чтобы закрыть всплывающее окно, а затем второй щелчок, чтобы выполнить какое-либо действие. Это очень нежелательно.
Я попытался обработать событие LostFocus для кнопки, открывающей всплывающее окно, и установил для параметра StaysOpen значение true. Это работает в том смысле, что нажатие на всплывающее окно не требует второго щелчка на элементе управления Win Forms. Теперь проблема в том, что событие LostFocus обрабатывается и всплывающее окно закрывается до того, как оно прочитает щелчок по любой кнопке во всплывающем окне. Это делает подменю непригодным для использования.