ComboBox не вызывает события клавиатуры и мыши, как ожидалось - PullRequest
1 голос
/ 13 июня 2011

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

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

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

1 Ответ

1 голос
/ 14 июня 2011

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

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

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

...