AutoCompleteBox使用大数据源时出现性能问题

时间:2012-02-17 10:22:28

标签: windows-phone-7 autocompletebox

我有一个数据源(类型为List),大约有30,000个条目。

public class LocationItem
{
    public string Name { get; set; };
    public double Latitude { get; set; };
    public double Longitude { get; set; };
    public double Height { get; set; };
}

将此源​​绑定到我的AutoCompleteBox后,每个输入的字母需要大约1-3s来过滤。过滤器类型为“自定义”。我的过滤方法不是瓶颈 - 我使用'秒表'类和性能分析器检查了它。过滤开始于第四个字符之前。

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

我还有其他方法可以去提升表现吗?或者最新的做法是将数据源(包含数千个条目)绑定到具有过滤功能的AutoCompleteBox?

亲切的问候, 丹尼

2 个答案:

答案 0 :(得分:0)

如果执行异步过滤会更好。
这是在Silveright中使用AutoCompleteBox的教程http://www.silverlightshow.net/items/Using-the-AutoCompleteBox.aspx。有一个异步过滤的例子。示例是使用Web服务,但您可以使用本地服务替换它,该服务从您已加载的文件或集合中加载数据。

答案 1 :(得分:0)

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

void autoCompleteBox_DropDownOpened(object sender, RoutedPropertyChangedEventArgs<bool> e)
{
    autoCompleteBox.ItemsSource = Data;
}