快速过滤listBox项目wpf?

时间:2012-07-20 12:24:08

标签: wpf

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

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

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

1 个答案:

答案 0 :(得分:0)

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

FTSwordFilter是过滤器。当它被改变时,我在过滤列表上调用NotifgyPropertyChanged。

return FTSwords.Where(ftsWrd => ftsWrd.StemStartsWith(FTSwordFilter));

public Boolean StemStartsWith(string stemStart)
    {
        return (WordStem).StartsWith(stemStart);
    }

将StartsWith替换为Contains

我还可以选择使用DamerauLevenshteinDistance

进行模糊滤波

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

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