0

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

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

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

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

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

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

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

在此处输入图像描述

4

3 回答 3

8

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

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

于 2013-07-22T19:00:40.350 回答
2

尝试将组合框的IsTextSearchCaseSensitive 属性设置为 true。不确定此属性在旧版本的 .NET 中是否可用

于 2013-05-30T21:33:26.270 回答
1

难道你不能使用 if 语句来检查它是否匹配列表中的任何内容,如果不匹配,不要更改它?就像在输入每个字母后进行检查,如果不匹配则将其更改回最初输入的大小写?

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

于 2013-07-21T13:06:04.650 回答