DataGridのスクロールが遅い

WPFでDataGridを使用していると、たかだか1,000件程度のデータを表示してスクロールすると非常にスクロールがもたつきます。項目数が4項目程度で1,000件程度のデータでさえです。

WindowsFormで同程度のデータをバインドした場合にはそのようなことは起こりませんでした。

そこで少し調べてみると、Pro WPF in C# 2010: Windows Presentation Foundation in .NET 4 にDeferred Scrollingという項目がありました。内容は、スクロールを優先し画面のリフレッシュを送らせることでスクロールがスムーズに行われているように見せることができるといった内容です。

具体的には、ScrollViewer.IsDeferredScrollingEnabledプロパティをTrueにすることでスクロールはスムーズに行われるようになります。しかし、データの表示は1から2秒程度遅延してスクロールに追いつくようになりますが…。

この本には仮装化などパフォーマンス改善について説明がいくつかあるのですが、いまいち試せていません。WindowsFormでパフォーマンス上の問題が起こるようなことをあまり経験せずにきたので、ここいらで気合いを入れて理解しようと思います。