2016-08-11 5 views
-2

Я использую текстовое поле автозаполнения из этого MSDN link.Как переопределить содержимое текстового поля в CSWPFAutoCompleteTextBox

Вопрос: CSWPFAutoCompleteTextBox имеет свойство «AutoSuggestionList», которое я связывал с наблюдаемой коллекцией string. Каждый string выполнен из описания id +. Когда пользователь выбирает элемент из раскрывающегося списка, как я могу переопределить содержимое texbox? Я хочу манипулировать содержимым текстового поля.

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

+0

Решенный вопрос путем переопределения OnSelectionChanged и получить ссылку на «PART_EditableTextBox» и установив его свойство Text. – user6340505

ответ

0

без фактического формата кода, трудно ответить точно, но, например, если ваши строки

string[] suggestions = {"0: Yes", "1: No", "666: whatever"} 

Тогда вы могли бы получить номер что-то вроде

sugestedString.Substring(0, sugestedString.IndexOf(':')); 

EDIT: Я неправильно понял вопрос. Так что, если я теперь понимаю правильно, вы можете сделать это с

for(int i = 0; i < suggestions.Length; i++) { 
    if(suggestions[i] == selectedString) { 
    return i; 
    } 
} 

Если вы ищете только номер в списке всех возможных предложений.

Если вы ищете номер в суженных предложениях, он становится несколько более сложным.

Прежде всего вам необходимо указать, что пользователь набрал так далеко (например, «Aut»). Затем вам нужно то, что он выбрал (например, «Автомобиль»). С этими вещами вы можете искать все свои возможные предложения, подсчитывать, сколько из них удовлетворяет введенному пользователем началу и окончательному, какой из них является выбранным. Это может выглядеть следующим образом:

int counter=0; 
for(int i = 0; i < suggestions.Length; i++) { 
    if(suggestions[i].StartsWith(typedString)) { 
    counter++; 
    if(suggestions[i] == selectedString) { 
     counter; 
    } 
    } 
} 
+0

извините. это не связано с строковыми манипуляциями. Этот вопрос заключается в том, как получить доступ к текстовому полю управления и переопределить его содержимое. – user6340505

+0

Ой, извините, тогда я не понял ваш вопрос. – Rao

+0

См. Отредактированный ответ. – Rao

Смежные вопросы