我的WPF应用程序中有一个ComboBox,我想输入Text in,用于更新ComboBox的Content(Items)。
每当我输入一个字符时,我都希望显示更新的项目。所以我设置IsDropDownOpen = true;
,但这会导致输入的文本被选中。
结果是:我键入1个char,打开ComboBox DropDown(并显示新项目),选择char。我键入第二个字符,它取代了第一个字符,因为它被选中(duh)!
如何取消选择ComboBox中的所有文本?我显然想要键入多于1个字符而不必再次单击ComboBox以取消选择所有文本...
代码:
//MainWindow.xaml
<ComboBox x:Name="comboBoxItemID" HorizontalAlignment="Left" Height="38"
VerticalAlignment="Top" Width="300" Canvas.Left="197" FontSize="21.333"
IsEnabled="True" KeyUp="comboBoxItemID_KeyUp" IsEditable="True"/>
//comboBoxItemID_KeyUp()
List<InventorySearchResult> Items = Invent.SearchArticle(this.comboBoxItemID.Text); //Get new Data
comboBoxItemID.ItemsSource = Items; //Update comboBox Data
comboBoxItemID.DisplayMemberPath = "Name";
comboBoxItemID.IsDropDownOpen = true;
答案 0 :(得分:3)
要取消选择ComboBox中的所有文本,请首先获取TextBox元素:
TextBox tb = (TextBox)comboBoxItemID.Template.FindName("PART_EditableTextBox", comboBoxItemID);
(来源:How to get ComboBox.SelectedText in WPF)
然后使用TextBox方法Select(int start, int length)
来设置选择,例如
tb.Select(tb.Text.Length, 0);
(来源:Deselect text in a textbox)
最后,禁用IsTextSearchEnabled
属性。我没有做太多测试,以找出为什么必须禁用它,但我想在我的情况下它与我更新项目的方式冲突,然后取消选择文本。