ComboBox не вызывает события клавиатуры и мыши, как ожидалось

Я использую Silverlight 4.0 и у меня проблемы с управлением ComboBox. Я хочу реализовать всплывающее меню, которое будет показывать и скрывать себя, не щелкая мышью. Это должно показать, когда я помещаю курсор в его область - этот prt работает хорошо. Затем он должен прятаться всякий раз, когда указатель мыши на некоторое время находится за пределами своей области. Я реализовал это с помощью MouseEnter и MouseLeave. Моя проблема - ComboBox - по моему мнению, этот элемент управления ведет себя странно. Обычно я ожидал, что он вызовет событие MouseEnter, когда я наведу на него курсор, и MouseLeave, когда я наведу курсор мыши где-либо еще. Реальная ситуация иная: всякий раз, когда я щелкаю по списку, он открывается и показывает список опций, и немедленно отправляет события LostFocus и MouseLeave. Таким образом, кажется, что элемент управления потерял фокус клавиатуры и указатель мыши был перемещен из своей области, в то время как на самом деле список оптинов в выпадающем списке открыт и активен и имеет фокус клавиатуры.

Итак, вопрос в том, как я могу узнать в своей программе, что происходит в выпадающих списках? Чтобы правильно скрыть мое всплывающее меню, мне нужно знать, когда список опций в выпадающем списке открыт или закрыт. Я не вижу никаких событий для этой или любой другой документации. (Требуемое поведение: если выпадающий список закрыт, я скрываю свое всплывающее меню в зависимости от положения курсора мыши. Если выпадающий список открыт, я никогда не скрываю свое всплывающее меню, пока пользователь не выберет что-либо в выпадающем списке или не закроет выпадающий список.)

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

1 ответ

Решение

В MSDN есть два события для ComboBox, которые вы можете посмотреть.

http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox_events(v=VS.95).aspx

DropDownClosed Происходит, когда раскрывающаяся часть поля со списком закрывается.
DropDownOpened Происходит, когда открывается раскрывающаяся часть поля со списком.

Другие вопросы по тегам