2015-06-11 4 views
0

У меня есть проводное PreviewLostKeyboardFocus событие до TextBox. Я обработал это событие. Когда я нажимаю на элемент ComboBox, он срабатывает дважды.Событие PreviewlostkeyboardFocus срабатывает дважды, когда я нажимаю на combobox WPF

Если я не обрабатывал его, срабатывает только один раз.

private void TextBox_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) 
{ 
    e.Handled = true; 
} 

Может кто-то помочь решить эту проблему?

+0

Почему это проблема? И чего вы пытаетесь достичь? – almulo

+0

Он должен стрелять один раз. Если это происходит дважды, вы должны проверить свой код, если есть что-то, что возвращает фокус в TextBox. Проверьте код, связанный с этим ComboBox, если что-то автоматически возвращает фокус в текстовое поле. E.G. Ваш код может вернуть фокус обратно в текстовое поле после того, как вы выбрали элемент в combobox. –

+0

@almulo Когда текстовое поле имеет недопустимые данные, я хочу, чтобы фокус возвращался в текстовое поле. – user3929088

ответ

0

При установке:

e.Handled = True; 

Вы эффективно предотвращая фокус оставляя TextBox.

Итак, если фокус находится в этом текстовом поле, и вы нажмете на другое поле (например, ComboBox), это приведет к срабатыванию события, но курсор останется навсегда в TextBox.

Снимите это или сделайте его условным.

+0

Да, я не хочу, чтобы фокус ушел из текстового поля, когда он имеет недопустимые данные. если я также сделаю условным, PreviewLostKeyboardFocus будет запущен дважды. После того, как новый фокус - ComboBoxControl Второй раз из ComboBoxItem Когда я нажимаю на кнопку, он запускается только один раз. если это поведение по умолчанию. Можем ли мы работать для этого? – user3929088

+0

Вам не нужен обходной путь. Просто не устанавливайте e.Handled в True, если проверка не завершится. –

Смежные вопросы