Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Wpf 组合框自动完成奇怪的行为_Wpf_Autocomplete - Fatal编程技术网

Wpf 组合框自动完成奇怪的行为

Wpf 组合框自动完成奇怪的行为,wpf,autocomplete,Wpf,Autocomplete,请容忍我。我有一个“自动完成”模式的组合框(WPF)。 很简单,对吧?只需将IsEditable设置为true <ComboBox IsEditable="True" Text="{Binding Model.TextEntered}" ItemsSource="{Binding Model.ListWithOptions}"/> 我有我的组合框,它会自动完成 但当我输入以下文本“caaaaa”时,它会将其更改为“caaaaa”。我理解组合框自动完成文

请容忍我。我有一个“自动完成”模式的组合框(WPF)。 很简单,对吧?只需将IsEditable设置为true

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

我有我的组合框,它会自动完成

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

有办法解决这个问题吗

作为替代方案,我会满足于(如果所有其他方法都失败):

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

尝试将组合框的IsTextSearchCaseSensitive属性设置为true。不确定此属性是否在较旧版本的.NET中可用。能否使用if语句检查它是否与列表中的任何内容匹配,如果不匹配,则不进行更改?比如在输入每个字母后进行检查,如果不匹配,将其更改回最初输入的大小写


或者你希望人们能够输入列表中没有的内容,这有什么原因吗?如果没有,您不能使用IsTextSearchEnabled而不是IsEditable吗?

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


在显示项目的方式上可能存在折衷,但它将选择正确的项目,并允许您在任何一种情况下键入字符而不进行更改。

它是可用的。它解决了套管问题,但自动完成现在区分大小写,这是不可接受的。我猜,我误解了你的问题。您希望它区分大小写。你不觉得吗?“caaaaa”与“ACAAAA”的要求还有什么不同1)我需要它不区分大小写才能在列表中查找项目。要求2)用户可以键入列表中未显示的值。因此,当只键入“ca”时,标题会转到“ca”,因为combo会找到“CA132S”,当用户继续键入以输入“caaaaa”时,标题会变成“caaaaa”。嗨,Kat,我不希望combobox是自动完成的,也希望用户添加一个不在列表中的字符串。@Ralfdekline您可以尝试将自动完成替换为已启用IsTextSearchEnabled。。。我不明白为什么它对组合框不起作用。。。我知道在我玩的一个游戏中,有一个下拉列表,如果你打开列表并开始键入,它将转到列表中的第一个匹配项。。。我不明白为什么它在显示用户类型的同时不起作用。。。因为你的问题似乎是自动完成部分正在改变框中的文本,试图匹配框中的内容。。。我不确定,但我想IsTextSearchEnabled会做你想做的。太好了。一直在寻找这个,为什么我没有发现这个:(.谢谢RichardThis属性仅在.NET4.5中受支持。在.NET4.0中是否有任何等效属性?