WPF ComboBox с использованием сочетаний клавиш для выбора элементов - PullRequest
0 голосов
/ 12 октября 2011

У меня есть поле со списком в WPF, которое использует следующий шаблон данных.С помощью форума я смог заставить его отображаться и вести себя должным образом.

Когда раскрывающийся список открыт, я бы хотел, чтобы пользователь мог набирать букву, и чтобы в раскрывающемся списке пропускался этот выбор.,Я видел, что это реализовано двумя способами, один из которых в основном захватывает ввод с клавиатуры в текстовом поле в поле со списком и выбирает в зависимости от того, что набрал пользователь.Это позволяет пользователю ждать и вводить больше текста, который добавляется к критериям.Другой случай, когда ввод с клавиатуры не фиксируется нигде, если вы наберете букву, подождите пару секунд и наберите другую букву, она приведет вас к выбору, начиная со второй введенной вами буквы.Если вы хотите набрать несколько букв критериев поиска, вы должны быстро набрать их вместе.

Я был бы рад любому подходу.Они могут выбрать только элемент, хотя он находится в списке, поэтому мне не очень нравится идея поместить элемент управления для редактирования в поле со списком, где они могут вводить все, что захотят.Я мог бы сделать это и проверить их ввод, но вместо этого заставить их выбрать что-то, находящееся в списке.

В этом случае это список системных цветов, которых более 140, поэтомумне нужно быстро обойти список.

Вот мой шаблон данных, который я использую.

    <DataTemplate x:Key="ColorSelectionComboBox" DataType="ComboBox">
        <StackPanel Orientation="Horizontal">
            <Rectangle Width="16" Height="16" Margin="0,2,4,2">
                <Rectangle.Fill>
                    <SolidColorBrush Color="{Binding Color}"/>
                </Rectangle.Fill>
            </Rectangle>
            <TextBlock Text="{Binding Name}"/>
        </StackPanel>
    </DataTemplate>

Любые идеи приветствуются.

1 Ответ

0 голосов
/ 12 октября 2011

ComboBox имеет встроенную поддержку для инкрементального поиска с помощью клавиатуры.На самом деле я не использовал (так что я не очень хорошо помогаю с расширенными возможностями по устранению неполадок), но я знаю, что это там.

Похоже, вам нужно установить в ComboBoxДля свойства IsTextSearchEnabled установлено значение true, а затем установите присоединенное свойство TextSearch.TextPath к пути привязки текста, по которому необходимо выполнить поиск (возможно, «Имя» соответствует вашему тексту TextBlock).

...