コレクション内のアイテムの量: ~100k 列に表示されるフィールドの量: 4-10
問題自体 - コレクションは EntityFramework を使用してデータベースから取得されます。必要なすべてのデータを読み込んで実体化するには、開発用コンピューターで約 10 ~ 12 秒かかります。さらに別の問題として、同じコレクションを複数のコントロールにバインドできるため、それらを個別にフィルター処理する必要があります (= デフォルトのコレクション ビュー フィルターを設定しない)。現在、バインディングを次のように設定しています。
Binding b = new Binding();
b.Source = new CollectionViewSource() { Source = MyLargeCollection }.View;
MyDataGrid.SetBinding(DataGrid.ItemsSourceProperty, b);
新しい CollectionViewSource を作成すると、初期化にかかる時間が大幅に増加します - 数分 (そして、何らかの理由で 100k コレクションを列挙していると思われます)。つまり、設定しただけの場合:
b.Source = MyLargeCollection;
データベースからデータをロードして実体化するには、10 ~ 12 秒しかかかりません。
質問 - 私のコードに何か問題がありますか? そうでない場合、同じ大規模なコレクションを異なるアイテム コントロールにバインドするが、異なるコレクション ビューを使用するための正しいアプローチは何でしょうか?