1

SQLite-Net-PCLを使用して、ローカルSQLiteデータベースのデータを読み書きしています。アプリの 1 つのページで、クエリに一致する特定のテーブルのすべてのエントリが必要です。親モデルとの関係を持つ子エンティティも取得する必要があります。したがって、私は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);
}

このメソッドを my から呼び出して、 のViewModelを作成しItemsSourceますListView

public ObservableCollection<Item> Items

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

これは の XAML コードですListView(テンプレート コードは削除しました)。

<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 に答える