Подтвердить что ты не робот

Как построить "слово за словом" автозаполнения в WPF?

Я уже провел некоторые исследования и в итоге получил несколько автозаполненных ящиков, которые имеют одну общую черту: все они соответствуют всему введенному выражению. Иногда они кажутся легко расширяемыми, но в конце они не являются.

Однако мне нужен текстовый блок, который позволяет пользователю вводить слово (например, "tag1" ), отображает всплывающее окно с предложениями на основе этого единственного слова, принимайте предложение с помощью ключа возврата и введите новое слово (например, "tag1 tag2" ) в том же текстовом поле, при этом всплывающее окно снова появится. (Мне нравится, как CintaNotes обрабатывает это)

Мне нужно это для интерфейса тегов. Часто пользователю проще писать теги в простой блок, но иногда ему нужна помощь. Это и есть автозаполнение.

Я нашел некоторые результаты, которые не работают для моей цели (imho):

Btw, Мне очень нравится, как работает Tag-Box для SO.

Есть ли у кого-нибудь идеи? Есть ли "готовое" решение где-то, что соответствует моим потребностям, но я не нашел? Или я должен сам построить его?

Спасибо!:)

4b9b3361

Ответ 2

Вероятно, вам нужно создать свой собственный словарь объект Key и Value и подключите этот Словарь к событиям текстового поля и закройте диалоговое окно предложений, в котором отображаются Значения из Словаря

Ответ 3

Отметьте эту реализацию: http://code.google.com/p/kocontrols/downloads/list Вы можете ввести собственный алгоритм поиска и собственный конвертер, который преобразует выбранный элемент в текст, который вы показываете в TextBox. Вам придется немного изменить его, но я думаю, что вы сможете решить свою проблему, основываясь на этой реализации. Я никогда не думал об этом типе использования. Не можете ли вы использовать разные текстовые поля для разных тегов? Что-то похожее на то, как это делает код goole?

Ответ 4

Если у вас есть время, вы можете использовать RichEditControl или TextBox и применить тот же шаблон, который используется в редакторах Intellisense или редакторе, дополняющих Code Completation: Подключить события изменения текста, контекст Recogize (последнее/текущее слово) и отобразить список опций на всплывающее управление. И, необязательно, при фиксации (обнаружение принятия или пробела) применить формат к слову.