首页 文章

快速过滤listBox项目wpf?

提问于
浏览
0

我有一个ListBox,其中包含至少1000个项目,每个类别都说“数据”具有“名称”属性 . 我在列表框上方还有一个文本框,用于根据输入文本过滤列表框中的项目 . 如何在列表框中快速查找项目 .

我尝试过这样的事情:在textBox_textChanged事件中,我得到了文本,并使用CollectionViewSource类来过滤掉项目,但这导致了一个非常生涩的ui . (我通过在我的Data类上获取Name属性并执行string.Contains()调用来过滤掉项目)

有没有办法加快搜索速度?谢谢 .

1 回答

  • 0

    我使用LINQ过滤数千个响应时间很长 .

    FTSwordFilter是过滤器 . 当它被更改时,我在筛选列表上调用NotifgyPropertyChanged .

    return FTSwords.Where(ftsWrd => ftsWrd.StemStartsWith(FTSwordFilter));
    
    public Boolean StemStartsWith(string stemStart)
        {
            return (WordStem).StartsWith(stemStart);
        }
    

    只需用Contains替换StartsWith即可

    我还可以选择使用DamerauLevenshteinDistance进行模糊滤波

    我是在后台任务上做的,但它足够快,我把它移到了前台 .

    我添加了2/10秒的延迟以允许输入多个字符 .

相关问题