WPF ComboBox PreviewMouseDown - PullRequest
       2

WPF ComboBox PreviewMouseDown

1 голос
/ 27 июня 2019

У меня есть поле со списком, которое редактируется, и текстовое поле.

    <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="86,149,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
    <ComboBox x:Name="comboBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120" Margin="282,150,0,0" IsEditable="True" PreviewMouseDown="ComboBox_PreviewMouseDown"/>

Я не понимаю, почему ComboBox_PreviewMouseDown не срабатывает, когда фокус находится на текстовом поле, и я нажимаю на поле со списком.Он просто выделяет текст в выпадающем списке и устанавливает фокус.При щелчке в поле со списком, когда он уже имеет фокус, вызывается PreviewMouseDown.Что здесь происходит?Почему PreviewMouseDown в не сфокусированном комбинированном списке не работает?

1 Ответ

1 голос
/ 28 июня 2019

Когда ComboBox.IsEditable 'установлен на True, ComboBox внутренне устанавливает фокус (и фокус клавиатуры) на значение TextBox, чтобы сделать его мгновенно доступным для ввода текста. Это имеет смысл, так как при нажатии TextBox всегда нужно вводить или редактировать какой-либо текст. В противном случае пользователю пришлось бы дважды щелкнуть TextBox, чтобы заставить его получать фокус для ввода текста (фокус клавиатуры).

Чтобы добиться ожидаемого поведения, вы должны обработать событие UIElement.PreviewGotKeyboardFocus или присоединенное событие Keyboard.PreviewGotKeyboardFocus в ComboBox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...