Для начала вы можете захотеть, чтобы пользователь увидел, вводит ли он один из доступных вариантов.
1) Поиск "combocomboox автозаполнения" онлайн.
2) Проверкаэто из:
http://weblogs.asp.net/okloeten/archive/2007/11/12/5088649.aspx
http://www.codeproject.com/KB/WPF/WPFCustomComboBox.aspx
3) Также попробуйте это:
<ComboBox IsEditable="true" TextSearch.TextPath="Content">
<ComboBoxItem Content="Hello"/>
<ComboBoxItem Content="World"/>
</ComboBox>
Приведенный выше фрагмент кода является простым способомпредоставить ту «визуальную индикацию», которую вы ищете.Если пользователь вводит «h», тогда «hello» появится в текстовом поле ввода.Однако это само по себе не будет иметь механизма, который не позволит пользователю вводить недопустимый символ.
4) Это более продвинутая версия:
<ComboBox Name="myComboBox" IsEditable="true" KeyUp="myComboBox_KeyUp">
<ComboBoxItem Content="Hello"/>
<ComboBoxItem Content="World"/>
<ComboBoxItem Content="WPF"/>
<ComboBoxItem Content="ComboBox"/>
</ComboBox>
Code-behind:
private void myComboBox_KeyUp(object sender, KeyEventArgs e)
{
// Get the textbox part of the combobox
TextBox textBox = myComboBox.Template.FindName("PART_EditableTextBox", myComboBox) as TextBox;
// holds the list of combobox items as strings
List<String> items = new List<String>();
// indicates whether the new character added should be removed
bool shouldRemove = true;
for (int i = 0; i < myComboBox.Items.Count; i++)
{
items.Add(((ComboBoxItem)myComboBox.Items.GetItemAt(i)).Content.ToString());
}
for (int i = 0; i < items.Count; i++)
{
// legal character input
if(textBox.Text != "" && items.ElementAt(i).StartsWith(textBox.Text))
{
shouldRemove = false;
break;
}
}
// illegal character input
if (textBox.Text != "" && shouldRemove)
{
textBox.Text = textBox.Text.Remove(textBox.Text.Length - 1);
textBox.CaretIndex = textBox.Text.Length;
}
}
Здесь мы не разрешаем пользователю продолжать вводить данные, как только мы обнаруживаем, что элемент комбинированного списка не начинается с текста в текстовом поле.Мы удаляем добавленного персонажа и ждем другого персонажа.