В WPF у ComboBox'а поддержка autocomplete-функциональности включается путем установления свойства IsTextSearchEnabled в "true".
Но этот autocomplete — регистро-независимый.
Так, если один из Item'ов ComboBox'а имеет значение QWE, и в текстовом поле мы захотим ввести qwerty, то, в результате работы автокомплита, получим QWErty.
Такой автокомплит скорее мешает, чем не помогает.
Как сделать, чтобы сравнение строк производилось с учетом регистра? То есть, чтобы при вводе маленькой "q" автокомплит вообще не срабатывал. Я понимаю что у ComboBox'а или TextSearch'а нету свойства, которое бы влияло на чувствительность автокомплита к регистру...
Здравствуйте, Vladek, Вы писали:
V>Здравствуйте, DynoMEAT, Вы писали:
DME>>Буду очень признателен за любую помощь.
V>Вон в недавнем релизе WPF Toolkit есть AutoCompleteBox — может пригодится.
Спасибо за скорый ответ.
AutoCompleteBox, безусловно, помог бы. Но, к сожалению, использование WPF Toolkit в разрабатываемом продукте на данный момент невозможно и потребует кучу бюрократических процедур (утверждение возможности использования третестороннего компонента отделом лицензирования и т.д.). Из-за такой мелочи как автокомплит, этим просто никто заниматься не захочет.
Здравствуйте, DynoMEAT, Вы писали:
DME>AutoCompleteBox, безусловно, помог бы. Но, к сожалению, использование WPF Toolkit в разрабатываемом продукте на данный момент невозможно и потребует кучу бюрократических процедур (утверждение возможности использования третестороннего компонента отделом лицензирования и т.д.)
Здравствуйте, DynoMEAT, Вы писали:
DME>Здравствуйте!
DME>В WPF у ComboBox'а поддержка autocomplete-функциональности включается путем установления свойства IsTextSearchEnabled в "true". DME>Но этот autocomplete — регистро-независимый. DME>Так, если один из Item'ов ComboBox'а имеет значение QWE, и в текстовом поле мы захотим ввести qwerty, то, в результате работы автокомплита, получим QWErty. DME>Такой автокомплит скорее мешает, чем не помогает.
DME>Как сделать, чтобы сравнение строк производилось с учетом регистра? То есть, чтобы при вводе маленькой "q" автокомплит вообще не срабатывал. Я понимаю что у ComboBox'а или TextSearch'а нету свойства, которое бы влияло на чувствительность автокомплита к регистру...
DME>Может кто-то сталкивался?
DME>Буду очень признателен за любую помощь.
Можно отключить автокомплит и с помощью Linq'a искать нужное значение и подставлять. Обрабатывать событие TextChanged так:
var list = (List<string>) myComboBox.ItemsSource;
myComboBox.Text = (list).Where(n => n.StartsWith(myComboBox.Text)).Single();
Здравствуйте, gBopHuk, Вы писали:
BH>Можно отключить автокомплит и с помощью Linq'a искать нужное значение и подставлять. Обрабатывать событие TextChanged так: BH>
Здравствуйте, apps, Вы писали:
A>Здравствуйте, DynoMEAT, Вы писали:
DME>>AutoCompleteBox, безусловно, помог бы. Но, к сожалению, использование WPF Toolkit в разрабатываемом продукте на данный момент невозможно и потребует кучу бюрократических процедур (утверждение возможности использования третестороннего компонента отделом лицензирования и т.д.)
A>Данное ПО распостраняется с Microsoft Public License (Ms-PL). A>Я думаю это не должно вызывать проблемы у отдела лицензирования.
Проблемы вызовет инициирование процесса работы отдела лицензирования
Кроме того, потребуется:
1. Доказать менеджменту необходимость использования нового третестороннего компонента (учитывая, что AutoCompleteBox имеет статус Preview, а не Stable).
2. Запросить менеджмент дать новую задачу команде сетапщиков, для добавления новой сборки в дистрибутив и т.д.
Это все возможно сделать, но есть ли необходимость? Продукт большой и придется выполнять кучу лишних телодвижений ради изменения логики AutoComplete в одном из комбобоксов.
Должен ведь быть простой способ, не подразумевающий использования третесторонних компонентов?
Здравствуйте, gBopHuk, Вы писали:
BH>Здравствуйте, gBopHuk, Вы писали:
BH>>Можно отключить автокомплит и с помощью Linq'a искать нужное значение и подставлять. Обрабатывать событие TextChanged так: BH>>
BH>Только еще надо проверить, что что-то нашлось, иначе ретурн, и сделать, чтоб кусок текста, который прибавился к введенному был выделенным
Спасибо, попробую повторить логику AutoComplete вручную...
Вот мне только интересно, почему нету просто какой-то функции, отвечающей за сравнение. Чтобы можно было взять ее и просто перегрузить
Здравствуйте, DynoMEAT, Вы писали: DME>Спасибо, попробую повторить логику AutoComplete вручную... DME>Вот мне только интересно, почему нету просто какой-то функции, отвечающей за сравнение. Чтобы можно было взять ее и просто перегрузить
Ну как же ж нету, когда есть. Берете CollectionViewSource, объявляете его в XAML, и его назначаете источником данных комбобоксу. И, собственно, фильтруете уже его.