Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 打开组合框下拉列表时不要选择文本输入_C#_Wpf_Combobox - Fatal编程技术网

C# 打开组合框下拉列表时不要选择文本输入

C# 打开组合框下拉列表时不要选择文本输入,c#,wpf,combobox,C#,Wpf,Combobox,我的WPF应用程序中有一个组合框,我想在其中输入文本,用于更新组合框的内容(项目) 无论何时输入字符,我都希望显示更新的项目。所以我设置了IsDropDownOpen=true,但这会导致选择输入的文本 结果是:我键入1个字符,打开组合框下拉列表(并显示新项目),字符被选中。我键入第二个字符,它将替换第一个字符,因为它已被选中(duh) 如何取消选择组合框中的所有文本?很明显,我想键入多个字符,而不必再次单击组合框来取消选择所有文本 代码: //MainWindow.xaml //comboBo

我的WPF应用程序中有一个组合框,我想在其中输入文本,用于更新组合框的内容(项目)

无论何时输入字符,我都希望显示更新的项目。所以我设置了
IsDropDownOpen=true,但这会导致选择输入的文本

结果是:我键入1个字符,打开组合框下拉列表(并显示新项目),字符被选中。我键入第二个字符,它将替换第一个字符,因为它已被选中(duh)

如何取消选择组合框中的所有文本?很明显,我想键入多个字符,而不必再次单击组合框来取消选择所有文本

代码:

//MainWindow.xaml
//comboBoxItemID_KeyUp()
List Items=Invent.SearchArticle(this.comboBoxItemID.Text)//获取新数据
comboBoxItemID.ItemsSource=项目//更新组合框数据
comboBoxItemID.DisplayMemberPath=“Name”;
comboBoxItemID.IsDropDownOpen=true;

要取消选择组合框中的所有文本,请首先获取TextBox元素:

TextBox tb = (TextBox)comboBoxItemID.Template.FindName("PART_EditableTextBox", comboBoxItemID);
(来源:)

然后使用文本框方法
选择(int start,int length)
设置选择,例如:

tb.Select(tb.Text.Length, 0);
(来源:)


最后,禁用
IsTextSearchEnabled
属性。我还没有做过很多测试来找出为什么必须禁用它,但我想在我的情况下,它与我更新项目然后取消选择文本的方式冲突。

您必须不断更改项目资源,还是可以从中获取所有数据开始?如果是后一种情况,您可以这样做,搜索将内置到comboboxIt中,并根据键入的内容进行更改
Invent.SearchArticle()
实际上执行SQL查询,返回的
列表是该查询返回的行列表。或者我应该声明一个列表,作为ItemsSource一次,并且只更改列表的内容吗?我不知道更改内容是否会产生影响,可能会。如果您尝试,请切换到一个可观察的集合,否则您的ui将不会更新,并且可能会出现异常。这可能不是每次按下一个键时查询数据库的最佳方法,尽管您在创新?
tb.Select(tb.Text.Length, 0);