Как построить "слово за словом" автозаполнение в WPF? - PullRequest
13 голосов
/ 12 ноября 2011

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

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

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

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

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

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

Спасибо!:)

Ответы [ 4 ]

3 голосов
/ 25 декабря 2011

Я думаю, что вы имеете в виду текстовое поле, которое автоматически заполняется для нескольких слов.Как TokenizedTexbox на WPF Extended Toolkit.это страница: http://wpftoolkit.codeplex.com/wikipage?title=TokenizedTextBox&referringTitle=Home

0 голосов
/ 27 ноября 2011

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

0 голосов
/ 16 декабря 2011

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

0 голосов
/ 15 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...