2016-06-17 7 views
2

Я использую стандартный элемент управления WPF ComboBox. Когда всплывающее окно открывается и пользователь щелкает где-то снаружи, всплывающее окно закрывается. Но если в окне есть кнопка, и пользователь нажимает на нее (всплывающее окно все еще открыто), обработчик кликов не выполняется. Всплывающее окно закрыто, но пользователю нужно нажать еще раз на кнопку, чтобы поднять событие клика на нем.WPF ComboBox: нажмите вне всплывающего окна, нажмите кнопку мыши

Я знаю, что это стандартное поведение для этого элемента управления. У вас есть идеи, как обойти это поведение? Благодаря!

+0

Со мной это не так. Когда всплывающее окно закрыто, событие щелчка кнопки увеличивается. – AnjumSKhan

+0

Вы используете WPF? Стандартный контроль? Какова ваша версия .net framework? –

ответ

1

Вы можете создать событие для ComboBox DropDownClosed и с помощью функции hittest, найдите другой элемент управления, который пользователь нажал.

Затем в функции FilterCallback после обнаружения этого элемента управления подведите курсор мыши к этому элементу управления.

Я нашел событие raise, не работает в comboboxes, поэтому, щелкнув его, я просто установил IsDropDownOpen в true.

Я нашел код в here и немного изменил его.

0

Вы можете попытаться освободить захват мышей сразу после того, ComboBox получает одно: в вашем ых свойствах ComboBox в XAML:

GotMouseCapture="ComboBox_OnGotMouseCapture" 

И фоновый код:

private void ComboBox_OnGotMouseCapture(object sender, MouseEventArgs e) 
{ 
    ComboBox.ReleaseMouseCapture(); 
}