DataGrid は仮想化をサポートしていることを知っているので、表示されている行に対してのみグリッド セルを作成します。ただし、これは DataGrid のサイズが制限されている場合にのみ機能するようです。
私のシナリオでは、DataGrid はスクロール ビューアー内に配置されます。
<ScrollViever>
<StackPanel>
<more elements .../>
<DataGrid ... />
<more elements .../>
</StackPanel>
</ScrollViever>
これは仮想化を壊すようです。DataGrid が多数の項目を表示する必要がある場合、外側の ScrollViewer で下にスクロールする前であっても、ビジュアル ツリーが非常に大きくなります。
ScrollViewer が下にスクロールしているときに DataGrid がすべてのセルを事前に作成するのを防ぐ方法はありますか?
編集: 基本的に、これをホストするページは、上部にいくつかのテキスト、大きなテーブル、下部にいくつかのテキストがある Web ページのようにする必要があります。上部/下部が常に表示され、グリッドのみがスクロールされるドックビューの代わりに、ページ全体がスクロールする必要があります。セットアップはこれを達成しますが、すべてが事前に作成されていることに苦しんでいます。
別の編集: データグリッドの特定の行がスクロールされて表示されたことを検出する方法はありますか? 典型的な遅延読み込み記事は、データグリッドのスクロールビューアーを使用してグリッドにさらに項目を追加しますが、ここでは機能しません。