AutoCompleteBox не получает правильное значение в C # wpf - PullRequest
2 голосов
/ 01 августа 2011

В настоящее время я работаю над проектом WPF C #.Я использую элемент управления WPC AutoCompleteBox, но у меня возникла проблема с получением значения из коробки.

Предполагая, что поле автозаполнения предназначено для имени сервера, когда я набираю 'loc', во всплывающем окне будет отображаться 'localhost', и я выбираю значение из выпадающего списка.

Когда я тогда попытаюсь отправить форму и попытаться получить значение поля, оно получит значение того, что я печатаю, а не того, которое я выбрал, то есть значение будет 'loc'.

Ниже приведен код, который я использую для заполнения элементов автозаполнения для элемента управления

using (SQLiteDataReader reader = cmd.ExecuteReader())
{
    List<string> serverArr = new List<string>();
    while (reader.Read())
    {
        serverArr.Add(reader["his_server"].ToString());
    }
    txtServer.ItemsSource = serverArr;
}

Я получаю значение из autocompletebox, сказав txtServer.Text;

Обновление

По предложению @Tom Studee я попытался использовать txtServer.selectedItem, который прекрасно работает, когда выбран элемент из автозаполнения.Однако, если введено значение, которое не находится в раскрывающемся меню автозаполнения, произойдет сбой с исключением из-за нулевого указателя.

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Вместо .Text используйте свойство .SelectedItem.

0 голосов
/ 01 августа 2011

Возможно, вы сможете

   string cbValue;
   if (SelectedIndex == -1) cbValue = .Text; else cbValue = .SelectedItem;
...