残念ながら何の回答も得られなかった 4 か月前の投稿を追加します。
シフトを使用してデータグリッドで複数選択を使用する場合、基本的に同じ問題の前に立っています。
巨大なリスト (グリッド内に 1,000,000 項目があり、すべてのデータが仮想化されているとします) のどこかにいて、Shift + マウス クリックを使用して 500,000 から 500,050 を選択すると、グリッドは私の "GetEnumerator()" メソッドを呼び出します。仮想リスト (Vincent と Paul のものと同様の実装)。私が今まで行っていたのは、キャッシュされたページに対する SelectMany だけでした。しかし残念なことに、行が適切に選択されませんでした (ctrl + マウス クリックでうまくいきます!)。
だから私が見つけたのは、DataGridが実際にはインデックス0から選択の最後までのすべてのアイテムを期待していることです。これは明らかに、1m アイテムのリストには理想的ではありません。これは、0 から (私の例では) 500,050 までのすべてのアイテムのリクエストが発生し、データベースからすべてをロードするためです。
したがって、私の質問は、上記のリンク先のダニエルの質問と同じです。
DataGrid が項目を複数回要求するのはなぜですか (選択した項目は、明らかな理由もなく連続して 6 ~ 7 回要求されます)。
Enumerator を使用しないように DataGrid に指示し、選択した項目だけを取得して 0 から繰り返し処理しないようにする方法はありますか?
データの仮想化に関してはあまり発見されていないため、少なくとも示唆に富む回答を得ることができれば幸いです。