DataGridによって、他のコントロールの描画が固まってしまうのを回避する方法はありますか?
現在、WPF+XAML+MVVMでアプリケーションを開発しています。
WPFのDataGridコントロールは大量のデータをBindすると描画に時間がかかるという既知の問題(仕様…)があります。
そのため、仮想化(VirtualMode)の機能が提供されていますが、ある程度は速くなったものの、それでも画期的に速くはできませんでした。
そこで割り切って、DataGridの描画中はインジケーターを表示して、ユーザーに可能な限り遅く見せないような工夫をしようと考えているのですが、
UIスレッドがDataGridによって占有されるためか、インジケーターまで固まってしまう問題が発生します。
(↑検証用に作ったプログラムを動かしているところ。「実行」ボタンをクリックすると、画面右側のDataGridにBindします。この時、画面左側のインジケーターに見立てたImageコントロールのアニメーションが一瞬固まってしまいます)
(↑パフォーマンスプロファイラーの結果もUPします。DataGridのレイアウト処理だけで1秒かかり、UIスレッドが占有されてしまっています)
インジケーターを固まらないようにする、良いアイデアはございますでしょうか?
UIスレッドを並列化できる方法があれば一番望ましいのですが...
サードパーティー製のDataGridを使うという方法もありますが(某C社などは30%速くなるみたいなことを謳っていたりもしますが)、標準のコントロールで済ませたいです。
また、DataGridに大量のデータをBindする行為自体はマストです。データ量を減らせ等の御意見はあるかと思いますが…。
ご教示よろしくお願いいたします。