Как имитировать тип поведения (текстовый поиск) неоткрытого поля со списком в WPF?

Стандартное поле со списком WPF имеет тип функциональности. То есть: когда поле со списком имеет фокус и пользователь набирает какие-то буквы, выделенный элемент в поле со списком изменяется (по отношению к набранным буквам).

Важно

Я не имею в виду поле со списком, для которого IsEditable установлено значение True, и я не имею в виду открытый список поля со списком. Я имею в виду чистое простое поле со списком с несколькими текстовыми элементами:

введите здесь описание изображения

Вопрос

Как я могу имитировать это поведение в своем поле со списком пользовательской сборки? (он построен с нуля и имитирует все, кроме указанной функциональности).

Мое поле со списком было построено с использованием классической схемы: кнопка переключения, всплывающее окно и поле со списком внутри всплывающего окна (при условии, что я не включаю все дополнительные функции в описанную схему). Окно списка отлично поддерживает функциональность «ввода». Итак, моя идея заключалась в том, чтобы перенести все нажатия клавиш с кнопки-переключателя в список:

Private Sub MyToggleButton_PreviewKeyDown(sender As Object, e As System.Windows.Input.KeyEventArgs) Handles MyToggleButton.PreviewKeyDown
    MyListBox_PreviewKeyDown(Me, e)
End Sub

Private Sub MyListBox_PreviewKeyDown(sender As Object, e As System.Windows.Input.KeyEventArgs) Handles MyListBox.PreviewKeyDown
    MyBase.OnPreviewKeyDown(e)
End Sub

Но почему-то не работает.


person Dima    schedule 12.05.2012    source источник
comment
Почему вы построили его с нуля? Разве вы не можете просто создать собственный стиль для стандартного ComboBox?   -  person Thomas Levesque    schedule 13.05.2012
comment
Было много причин создать его с нуля вместо того, чтобы настраивать стиль или шаблон элемента управления. Имеет много дополнительных функций. Но это не относится к вопросу :)   -  person Dima    schedule 13.05.2012


Ответы (1)


Прочтите эту статью.

http://www.codeproject.com/Articles/66890/A-Keyboard-Selection-Enabled-ComboBox-in-Silverlig

Хотя статья предназначена для silvelight, она должна показать вам необходимые шаги.

Если вы не опубликуете код о том, как вы реализовали поле со списком, никто не сможет дать полное решение.

person Vasudevan Kannan    schedule 13.05.2012
comment
Привет, Васудеван, хотя в предоставленном решении есть блестящая идея создать строку поиска и искать ее в элементах, у него есть действительно большой недостаток: вы можете использовать это решение только для английских букв - нет международной поддержки. - person Dima; 13.05.2012