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

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

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

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


person Al Kepp    schedule 13.06.2011    source источник


Ответы (1)


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

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

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

person Kik    schedule 13.06.2011