1

我使用来自本地数据库 DB .sdf 的查询 LinQ 创建了一个 ObservableCollection<>,然后我将 autocompleteBox(Silverlight Toolkit 2011 年 8 月)与我的 ObservableCollection<> 绑定,但这加载我的元素非常慢。

<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>

我的代码 cs 中的 ObservableCollection<>:

 var elements= from r in myDB.stazioni select r;
        DSTAITEMS = new ObservableCollection<DSTA>(elements);
4

1 回答 1

0

我发现通过 ItemsSource 的自动填充对于大型数据库可能会有一些滞后。

您要研究的另一种方法是首先通过基于小主键填充并使用 C# 在文本变为可见或焦点时将文本直接填充到屏幕来创建列表。

例如,我必须搜索一个包含超过 80,000 个具有超过 9 个不同属性的实体的庞大数据库。当我进行搜索时,我只是根据与搜索参数匹配的实体关联的主键数量来加载列表。该列表通常在几毫秒内加载,时间长度仅基于搜索 emmeets 数量而不是加载其内容的时间。然后,当按下搜索时,搜索方法会加载一个方法来填充前三个元素。当用户滚动浏览搜索结果时,每个项目的文本和描述会在用户基于查找器方法滚动时快速填充,而不是一次全部填充。正如您可以想象的那样,一个大型搜索结果 - 需要花费大量时间才能解决。

于 2011-12-12T18:53:19.163 回答