我创建了一个ObservableCollection<>使用来自本地数据库DB .sdf的查询LinQ,然后我使用我的ObservableCollection<>绑定autocompleteBox(Silverlight Toolkit 2011年8月)。但加载我的元素非常慢。
<toolkit:AutoCompleteBox ItemsSource="{Binding DSTAITEMS}" ValueMemberBinding="{Binding DESSTA}" HorizontalAlignment="Left" Margin="69,67,0,0" Name="autoCompleteBoxPartenza" VerticalAlignment="Top" Text="Stazione di partenza" Foreground="Gray" Width="295" MouseEnter="autoCompleteBoxPartenza_MouseEnter">
<toolkit:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DESSTA}"></TextBlock>
</DataTemplate>
</toolkit:AutoCompleteBox.ItemTemplate>
</toolkit:AutoCompleteBox>
ObservableCollection&lt;&gt;在我的代码cs:
var elements= from r in myDB.stazioni select r;
DSTAITEMS = new ObservableCollection<DSTA>(elements);
答案 0 :(得分:0)
我发现通过ItemsSource的自动填充对于大型数据库来说可能会有一些滞后。
您要查看的另一种方法是首先通过基于小主键填充来创建列表,并使用C#在文本变为可见时直接将文本填充到屏幕或焦点。
例如,我必须搜索一个包含超过9种不同属性的超过80,000个实体的海量数据库。当我进行搜索时,我只是根据与匹配搜索参数的实体关联的主键数加载列表。列表通常在几毫秒内加载,时间长度完全基于搜索emlemets数量而不是加载其内容的时间。然后,在按下搜索时,搜索方法加载一个方法来填充前三个元素。当用户滚动浏览搜索结果时,每个项目的文本和描述都会在用户基于finder方法滚动时快速填充,而不是一次性滚动。你可以想象一个大的搜索结果 - 否则将需要血腥的年龄来解决。你也可以输入一个简单的加载动画,而搜索内容加载一切,如果你不想“动态”加载这也是一个死的有用的方法从存储在数据库中的文本加载本地图像或尝试加载在线数据/来自DB中字符串的图像。