Windows phone 7 使用大数据源时出现性能问题的AutoCompleteBox

Windows phone 7 使用大数据源时出现性能问题的AutoCompleteBox,windows-phone-7,autocompletebox,Windows Phone 7,Autocompletebox,我有一个数据源(类型列表),有大约30000个条目 public class LocationItem { public string Name { get; set; }; public double Latitude { get; set; }; public double Longitude { get; set; }; public double Height { get; set; }; } 将此来源绑定到我的自动完成框后,每个输入的字母需要大约1-3

我有一个数据源(类型列表),有大约30000个条目

public class LocationItem
{
    public string Name { get; set; };
    public double Latitude { get; set; };
    public double Longitude { get; set; };
    public double Height { get; set; };
}
将此来源绑定到我的自动完成框后,每个输入的字母需要大约1-3秒的时间进行过滤。筛选器类型为“自定义”。我的过滤方法不是瓶颈——我用“秒表”类和性能分析器检查了这一点。筛选不在第四个字符之前开始

唯一可以稍微快一点的方法是使用TextChanged事件,而不是实现的过滤器行为。在TextChanged事件中,我过滤原始数据源(Linq),并仅将过滤后的子集绑定到AutoCompleteBox

还有其他方法可以提高性能吗?或者,将数据源(具有数千个条目)绑定到具有筛选功能的自动完成框的最佳做法是什么

亲切问候,,
Danny

如果执行异步筛选,效果会更好
下面是在Silverlight中使用AutoCompleteBox的教程。这里有一个异步过滤的例子。该示例使用web服务,但您可以将其替换为本地服务,该服务从您已经加载的文件或集合中加载数据。

void SetData()
void SetData()
{
    ...
    autoCompleteBox = Data.GetRange(0, 30);
    ...
}

void autoCompleteBox_DropDownOpened(object sender, RoutedPropertyChangedEventArgs<bool> e)
{
    autoCompleteBox.ItemsSource = Data;
}
{ ... autoCompleteBox=Data.GetRange(0,30); ... } void autoCompleteBox_dropdown打开(对象发送方,RoutedPropertyChangedEventArgs e) { autoCompleteBox.ItemsSource=数据; }
稍微解释一下你的答案会有所帮助。