WPF Combobox - case sensitive autocomplete
От: DynoMEAT Россия  
Дата: 01.03.10 15:32
Оценка:
Здравствуйте!

В WPF у ComboBox'а поддержка autocomplete-функциональности включается путем установления свойства IsTextSearchEnabled в "true".
Но этот autocomplete — регистро-независимый.
Так, если один из Item'ов ComboBox'а имеет значение QWE, и в текстовом поле мы захотим ввести qwerty, то, в результате работы автокомплита, получим QWErty.
Такой автокомплит скорее мешает, чем не помогает.

Как сделать, чтобы сравнение строк производилось с учетом регистра? То есть, чтобы при вводе маленькой "q" автокомплит вообще не срабатывал. Я понимаю что у ComboBox'а или TextSearch'а нету свойства, которое бы влияло на чувствительность автокомплита к регистру...

Может кто-то сталкивался?

Буду очень признателен за любую помощь.
wpf combobox
Re: WPF Combobox - case sensitive autocomplete
От: Vladek Россия Github
Дата: 01.03.10 16:04
Оценка:
Здравствуйте, DynoMEAT, Вы писали:

DME>Буду очень признателен за любую помощь.


Вон в недавнем релизе WPF Toolkit есть AutoCompleteBox — может пригодится.
Re[2]: WPF Combobox - case sensitive autocomplete
От: DynoMEAT Россия  
Дата: 01.03.10 16:14
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Здравствуйте, DynoMEAT, Вы писали:


DME>>Буду очень признателен за любую помощь.


V>Вон в недавнем релизе WPF Toolkit есть AutoCompleteBox — может пригодится.


Спасибо за скорый ответ.
AutoCompleteBox, безусловно, помог бы. Но, к сожалению, использование WPF Toolkit в разрабатываемом продукте на данный момент невозможно и потребует кучу бюрократических процедур (утверждение возможности использования третестороннего компонента отделом лицензирования и т.д.). Из-за такой мелочи как автокомплит, этим просто никто заниматься не захочет.

Еще раз спасибо
Re[3]: WPF Combobox - case sensitive autocomplete
От: apps Россия  
Дата: 01.03.10 16:49
Оценка:
Здравствуйте, DynoMEAT, Вы писали:

DME>AutoCompleteBox, безусловно, помог бы. Но, к сожалению, использование WPF Toolkit в разрабатываемом продукте на данный момент невозможно и потребует кучу бюрократических процедур (утверждение возможности использования третестороннего компонента отделом лицензирования и т.д.)


Данное ПО распостраняется с Microsoft Public License (Ms-PL).
Я думаю это не должно вызывать проблемы у отдела лицензирования.
Если нам не помогут, мы тоже никого не пощадим...
Re: WPF Combobox - case sensitive autocomplete
От: gBopHuk Россия  
Дата: 01.03.10 21:41
Оценка:
Здравствуйте, 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();
Re[2]: WPF Combobox - case sensitive autocomplete
От: gBopHuk Россия  
Дата: 01.03.10 21:50
Оценка: 2 (1)
Здравствуйте, gBopHuk, Вы писали:

BH>Можно отключить автокомплит и с помощью Linq'a искать нужное значение и подставлять. Обрабатывать событие TextChanged так:

BH>
BH>var list = (List<string>) myComboBox.ItemsSource;
BH>myComboBox.Text  = (list).Where(n => n.StartsWith(myComboBox.Text)).Single();
BH>

Только еще надо проверить, что что-то нашлось, иначе ретурн, и сделать, чтоб кусок текста, который прибавился к введенному был выделенным
Re[4]: WPF Combobox - case sensitive autocomplete
От: DynoMEAT Россия  
Дата: 02.03.10 12:28
Оценка:
Здравствуйте, apps, Вы писали:

A>Здравствуйте, DynoMEAT, Вы писали:


DME>>AutoCompleteBox, безусловно, помог бы. Но, к сожалению, использование WPF Toolkit в разрабатываемом продукте на данный момент невозможно и потребует кучу бюрократических процедур (утверждение возможности использования третестороннего компонента отделом лицензирования и т.д.)


A>Данное ПО распостраняется с Microsoft Public License (Ms-PL).

A>Я думаю это не должно вызывать проблемы у отдела лицензирования.

Проблемы вызовет инициирование процесса работы отдела лицензирования
Кроме того, потребуется:
1. Доказать менеджменту необходимость использования нового третестороннего компонента (учитывая, что AutoCompleteBox имеет статус Preview, а не Stable).
2. Запросить менеджмент дать новую задачу команде сетапщиков, для добавления новой сборки в дистрибутив и т.д.

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

Спасибо,
Александр
Re[3]: WPF Combobox - case sensitive autocomplete
От: DynoMEAT Россия  
Дата: 02.03.10 12:33
Оценка:
Здравствуйте, gBopHuk, Вы писали:

BH>Здравствуйте, gBopHuk, Вы писали:


BH>>Можно отключить автокомплит и с помощью Linq'a искать нужное значение и подставлять. Обрабатывать событие TextChanged так:

BH>>
BH>>var list = (List<string>) myComboBox.ItemsSource;
BH>>myComboBox.Text  = (list).Where(n => n.StartsWith(myComboBox.Text)).Single();
BH>>

BH>Только еще надо проверить, что что-то нашлось, иначе ретурн, и сделать, чтоб кусок текста, который прибавился к введенному был выделенным

Спасибо, попробую повторить логику AutoComplete вручную...
Вот мне только интересно, почему нету просто какой-то функции, отвечающей за сравнение. Чтобы можно было взять ее и просто перегрузить
Re[4]: WPF Combobox - case sensitive autocomplete
От: Codechanger Россия  
Дата: 02.03.10 12:47
Оценка: +1
Здравствуйте, DynoMEAT, Вы писали:
DME>Спасибо, попробую повторить логику AutoComplete вручную...
DME>Вот мне только интересно, почему нету просто какой-то функции, отвечающей за сравнение. Чтобы можно было взять ее и просто перегрузить

Ну как же ж нету, когда есть. Берете CollectionViewSource, объявляете его в XAML, и его назначаете источником данных комбобоксу. И, собственно, фильтруете уже его.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.