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