1

我正在使用SQLite-Net-PCL将数据读取和写入本地SQLite数据库。在我的应用程序的一个页面上,我需要特定表中与查询匹配的所有条目。我还需要检索与父模型有关系的子实体。因此我使用SQLite-Net Extensions。在移动设备上获取项目可能需要一些时间。

由于ListView无论如何都无法显示所有条目 - 我想加载前 100 个条目,而不是当用户滚动ListView.

我写了一个DatabaseHelper提供以下方法的方法:

public async static Task<ObservableCollection<Item>> GetItemsByQueryAsync(string query)
{
    List<Item> models = null;
    var conn = new SQLiteAsyncConnection(() => getAsyncSQLiteConnection());
    models = await conn.GetAllWithChildrenAsync<Item>(i => i.name.Contains(query));
    return new ObservableCollection<Item>(models);
}

我从我的调用这个方法来ViewModel创建:ItemsSourceListView

public ObservableCollection<Item> Items

private async void GetItems()
{
    Items = await DatabaseHelper.GetItemsByQueryAsync(SearchQuery);
}

这是ListView(我删除了模板代码)的 XAML 代码

<ListView x:Name="Items_ListView" ItemsSource="{Binding Items}" />
4

1 回答 1

3

您正在寻找的是实现ISupportIncrementalLoading框架中构建的接口(https://msdn.microsoft.com/library/windows/apps/Hh701916

一个很好的例子可以在这里找到: https ://marcominerva.wordpress.com/2013/05/22/implementing-the-isupportincrementalloading-interface-in-a-window-store-app/

于 2015-10-07T13:13:20.577 回答