0

我想创建只允许从固定列表中进行选择但具有可编辑组合等搜索功能的组合,即当您键入组合时,将搜索与您键入的前缀匹配的项目,并且前缀之后的文本在选择框中突出显示。

我想我可以实现必要的逻辑来进行搜索,但我不知道如何让突出显示工作。我想我可以用文本块组成组合项目并使用和背景颜色来实现突出显示,但项目需要知道它是在选择框中呈现的,而不是在下拉区域中呈现。使用 IsEditable=false 有一些前缀搜索功能,但它是暂时的 - 如果您在一两秒钟内没有输入任何内容,则前缀将被重置。为了使其可用,用户需要查看他输入的内容,并在需要时使用退格键编辑前缀,因此突出显示前缀很重要。

该组合可能有很多长物品,我希望用户有时间找到他想要的物品。将 IsEditable 设置为 true 或多或少会提供我想要的搜索行为,但我不希望用户能够在与任何项目不匹配的框中键入文本。

我已经研究过自定义可编辑组合以仅接受与列表中的项目匹配并取得一定程度成功的按键,但我不希望可编辑组合的选择行为 - 请参阅此问题https://stackoverflow.com/问题/10442021/how-can-i-customize-an-editable-wpf-combo-to-prevent-change-the-selected-value

4

1 回答 1

0

ComboBox 将显示第一个匹配条目,即使IsEditable="False".

您遇到的问题可能是一个固定列表,其中包含多个以相同开头的条目。例如:

AAAA
AACC
BBBB

在这种情况下,您可以给每个条目一个唯一的键:

<ComboBox IsEditable="False">
    <ComboBoxItem Content="AAAA" TextSearch.Text="A" />
    <ComboBoxItem Content="BBBB" TextSearch.Text="B" />
    <ComboBoxItem Content="AACC" TextSearch.Text="C" />
</ComboBox> 

然后,如果您键入CAACC条目将被选中。

于 2012-05-03T09:48:29.173 回答