2012-02-17 80 views
0

我有一个包含约30,000个条目的数据源(类型为List)。使用大型数据源时出现性能问题的AutoCompleteBox

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?

亲切的问候, 丹尼

回答

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

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

更好地解释你的答案会有所帮助。 – 2012-10-26 20:38:15

相关问题