入力機能に合わせて検索を実装しようとしています (デフォルトの電子メール アプリの検索機能のような) - 50 個のアイテムを含むリスト ボックスがあります - 各アイテムは文字列フィールドを持つクラス オブジェクトにバインドされています...文字列フィールドの1つに検索ボックスのテキストがあるアイテムを検索して表示するには-これは、ユーザーがテキストボックスにキーを入力するためです...いくつかのアプローチを試しました->
1 >> CollectionViewSource を使用する
- CollectionViewSource を DB のすべてのアイテムに
バインドする - リスト ボックスを CollectionViewSource にバインドする
- CollectionViewSource のフィルター プロパティを設定する - アイテムの検索ボックス内のテキストを検索する関数に、 e.Accepted を設定します - すべてのキーアップ イベントで
- フィルタリングは正常に動作しますが、50 個のアイテムでは遅くなります :( - 各アイテムを取得し、e.Accepted プロパティを true に設定するかどうかをチェックするフィルターの cos を推測します
.... ロード時に 1 つの DB 呼び出ししかしCollectionViewSourceでファイラーにどの要素を表示するかを決める処理が大変なようです
2 >> フィルター @ DB レベル
- キーアップ時 - 検索ボックス内のテキストを ViewModel に送信し、そこで関数が検索文字列を持つオブジェクトの ObservableCollection を返します
- ObservableCollection はリストボックスにバインドされ
ます ....あまり処理されません @ the最上位レイヤーですが、キープレスごとに複数の DB 呼び出し - それでも遅いですが、アプローチ 1 よりは少し高速です
あなたが推奨する他のアプローチはありますか?または上記のアプローチをさらに最適化するための提案はありますか? - 検索をスムーズに機能させるための微調整はありますか?
初めてのモバイル開発 :) ... よろしくお願いします :)