我使用SQLite-Net-PCL来读取和写入本地SQLite
数据库的数据。在我的应用程序的一个页面上,我需要来自特定表中与查询匹配的所有条目。我还需要检索与父模型有关系的子实体。因此我使用SQLite-Net Extensions。在移动设备上获取项目可能需要一些时间。
由于ListView
无法显示所有条目 - 我想在用户滚动ListView
时加载前100个条目,而不是所有其他条目。
我写了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
调用此方法为ItemsSource
创建ListView
:
public ObservableCollection<Item> Items
private async void GetItems()
{
Items = await DatabaseHelper.GetItemsByQueryAsync(SearchQuery);
}
这是ListView
的XAML代码(我删除了模板代码)
<ListView x:Name="Items_ListView" ItemsSource="{Binding Items}" />
答案 0 :(得分: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/