首页 > 解决方案 > 在 WPF 组合框中键入时移动选定的索引

问题描述

我对 WPF 中的组合框有疑问。您知道,当您打开组合框并开始输入时,组合框的选定索引正在移动到以相同字母开头的元素。好吧,我实际上需要同样的东西,但有点不同。

组合框中的项目实际上绑定到一个类。此类有 2 个属性,一个 Code 属性(例如包含“XF15A”)和一个 Description 属性(例如包含“Radio”)。我使用了一个数据模板,该模板实际上将组合框项目的文本绑定到“[code] - [Description]”。

现在,当类型“XF”进入以“XF”开头的组合框项目时。但是我现在还需要的是,当您键入“Ra”时,它应该转到组合框项“XF15A - Radio”。

你们知道如何解决这个问题吗?我也对现有的用户控件开放。

谢谢,

标签: c#wpfcombobox

解决方案


我的代码不是你想要的,但应该给你一个你自己如何做的例子:

您必须PreviewTextInput自己处理并让您的算法决定选择哪个项目。这是一个简单的例子:

XAML:

<ComboBox x:Name="cb" PreviewTextInput="ComboBox_PreviewTextInput">
    <ComboBoxItem>adsfsf</ComboBoxItem>
    <ComboBoxItem>adsfsf</ComboBoxItem>
    <ComboBoxItem>acdd</ComboBoxItem>
    <ComboBoxItem>adsfsf</ComboBoxItem>
</ComboBox>

代码背后:

private void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    cb.IsDropDownOpen = true;
    foreach (ComboBoxItem item in cb.Items)
    {
        var str = (string)item.Content;
        if(str.Contains(e.Text))
        {
            cb.SelectedItem = item;
            break;
        }
    }
}

推荐阅读