5

私は DataTable を ItemsSource として設定した DataGrid を持っています。DataTable は 24 列と最大 1600 行を保持します (実際には、後でさらに多くの行をロードする必要がありますが、今のところ、これは十分に面倒です)。

列と行の仮想化をアクティブに設定しているにもかかわらず、DataGrid がこれらの 1600 行を表示するのに約 30 秒かかります。その後、垂直方向のスクロールは正常に機能し、水平方向のスクロールは遅くなりますが、その逆が予想されます。

メモリ プロファイラーを実行すると、アプリケーションが使用するメモリのほとんどが DataGridCells、Borders、ContentPresenters、および Textblocks からのものであることを確認できます。私には、これはグリッドがその行を適切に仮想化していないことを示しています。

DataGrid の仮想化に問題があることを確認できる人はいますか? それとも、このコントロールの実装に何らかの悪名高いトラップがあるのでしょうか?

あらゆる種類の入力/提案を楽しみにしています。ありがとう :)

4

2 に答える 2

5

問題を解決しました。私の DataGrid は ScrollViewer 内にあり、無限に伸びていました。そのため、すべてが表示されていると思い込んでいたため、アイテムを仮想化していませんでした。ScrollViewer を削除しました (DataGrid には独自のスクロールバーがあります) が、問題なく動作するようになりました。

于 2013-02-25T09:37:39.703 に答える
2

うーん、わかりました。理由はわかりませんが、ここに回答を投稿するには、接着剤のテキストを追加する必要があります。たぶん、このSOの答えはあなたを助けるでしょう。

編集

追加のアドバイスとして、私はあなたにあなたのアプローチについて考えることを勧めたいと思います。本当に1.6k以上のアイテムを追加する必要がありDataGridますか?おそらく、遅延ロードについて考える必要があります。

于 2013-02-19T13:49:51.127 に答える