键入WPF组合框时移动选定的索引

时间:2018-06-22 14:10:54

标签: c# wpf combobox

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

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

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

我的代码并不是您想要的,但是应该给您一个示例,说明您自己如何执行:

您必须自己处理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;
        }
    }
}