У меня есть WPF ComboBox
Мне нужно изменить поведение по умолчанию в всплывающем списке.
Теперь нажатием клавиш up
и down
SelectedItem
автоматически изменится.
Мне нужно изменить SelectedItem
только нажатием клавиши Enter
или щелчком мыши.
Как это можно сделать?
Я вложил в подкласс ComboBox
:
protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e)
{
Debug.Write("Pressed " + e.Key+ " ");
if (e.Key == System.Windows.Input.Key.Up || e.Key == System.Windows.Input.Key.Down)
{
// ???
e.Handled = true;
return;
}
base.OnPreviewKeyDown(e);
}
Этот код не работает - всплывающее окно не отображается, и пользователь не может выбирать элементы.
Что я должен написать и где? :)
Спасибо.
UPD1:
Мне нужна та же функциональность, что и ComboBox's
, открыто всплывающее окно, и пользователь может выбирать элементы мышью.
Каждый элемент может быть перемещен мышью, но не выбран. Выбор делается только нажатием кнопки мыши. Мне нужно то же самое. «Вверх» и «Вниз» только подсвечивает элементы во всплывающем окне, но SelectedItem
будет изменено только нажатием Enter
или щелчком мыши.
UPD2:
Если я нажимаю кнопку мыши, открывающую всплывающее окно в ComboCox, я могу выделить элементы в всплывающем окне мышью, но SelectedItem изменится, только если я нажму на элемент.
Мне нужна та же функциональность с помощью клавиатуры. Если я начну печатать в ComboBox, откроется Popup. И я должен выделять элементы с помощью клавиатуры Up
и Down
. TextBox в ComboBox не должен изменяться во время выделения, а SelectedItem должен изменяться только при нажатии Enter
(или щелчке мыши)
UPD3:
Ссылка на демонстрационное решение: скачать