ComboBox自动完成奇怪的行为

时间:2013-05-30 20:28:07

标签: wpf autocomplete

忍受我。我在“自动完成”模式下有一个ComboBox(WPF)。 容易腻到对吗?只需将IsEditable设置为true即可。

<ComboBox 
    IsEditable="True"
    Text="{Binding Model.TextEntered}"
    ItemsSource="{Binding Model.ListWithOptions}"/>

我有我的ComboBox,它的自动完成功能非常完美。

但是当我输入以下文字'caaaaa'时,它会将其更改为'CAaaaa'。我理解ComboBox自动完成的文本并匹配大小写。但是当我想进入caaaaa(无论出于何种原因)时,我不想要'CAaaaa'。

有什么想法解决这个问题吗?

作为替代方案,我会满意(如果一切都失败了):

  • 离开控件时,检查输入的文本是否与任何选项设置文本tolower不匹配。 (作为一种行为)

enter image description here

3 个答案:

答案 0 :(得分:7)

您是否尝试过设置ShouldPreserveUserEnteredPrefix="True"?这不会改变在Combobox中键入的情况,但仍会匹配列表中的项目。因此,在您的示例中,如果您键入“ca13”,它将找到并选择“CA132S”,但它将在组合框中显示为“ca132s”(在输入的情况下)。

可能会显示项目的显示方式,但它会选择正确的项目,并允许您在任何一种情况下键入字符而无需更改。

答案 1 :(得分:2)

尝试将ComboBox的 IsText搜索区分大小写属性设置为true。不确定此属性是否在旧版.NET中可用

答案 2 :(得分:1)

你不能使用if语句检查它是否与列表中的任何内容匹配,如果不匹配,请不要更改它?就像输入每个字母后检查一样,如果它不匹配则将其更改回原来输入的情况?

或者您是否有理由希望人们能够输入不在列表中的内容?如果没有,你不能使用IsTextSearchEnabled而不是IsEditable吗?