【发布时间】:2011-07-31 22:11:11
【问题描述】:
我目前正在开发一个 WPF C# 项目。我正在使用 AutoCompleteBox WPF 控件,但在获取开箱即用的值时遇到问题。
假设自动完成框用于服务器名称,当我键入“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;
}
我通过说 txtServer.Text 从自动完成框中获取值;
更新
As suggested by @Tom Studee I tried using the txtServer.selectedItem which works fine when an item from the auto complete is selected.但是,如果键入的值不在自动完成下拉列表中,则会失败并出现空指针异常。
【问题讨论】:
-
我无法重现这一点,当我从列表中选择建议的项目时,它还会更新
Text属性。您的AutoCompleteBox是如何定义的? -
@Meleak 如果单击建议的项目,则 SelectedItem 可以正常工作。现在的问题是,如果用户键入的值不在自动完成建议中,则会导致空指针异常
-
那么,您是在寻找选定的项目还是文本?如果用户选择了不在列表中的项目,则预期结果为 null。如果您正在查找文本值,请使用
Text属性,还是我遗漏了什么? -
@Meleak,我需要能够得到任何一个。如果它是一个新条目,我需要获取文本,如果用户选择其中一个建议,我需要获取所选项目。谢谢
标签: c# wpf autocompletebox