私は非常に複雑な UI を持っており、複数の種類のステータス メッセージを含むステータス バーが絶えず変化し、UI には複雑なチャート コントロールと地理的な地図が読み込まれています。
現在、これらの小さくても複雑な領域のデータ コンテキストには、StatusBarVM、ChartingVM、GeoMapVM などの同じように複雑な ViewModels があります。これらは、INotifyPropertyChanged と ObservableCollections を実装しています。
更新を計算すると、約 5000 個の UI アイテム (ラベル、プログレスバー、チャート データ ポイント、bgcolorsbrushes など) があり、1 秒あたり 1000 個のデータ アイテム更新という高速で変化しています。
WPF UI でこの一括データ更新を実現する最善の方法は何ですか?
WPF のバインディング モデルは、このような大規模な更新に対応できますか? もしそうなら、どのように?私の場合は最適ではないことがわかったからです。私はbgworker(プログレスバー用)も使用しており、DIspatcher BeginInvokeを使用しています...しかし、ポイントは、ディスパッチャーメッセージがキューに入れられて終了するのを待っているため、更新によってUIスレッドがハングすることです。
ステータスがリアルタイムであるため、仮想化を実装できず、目の前の UI でそれらすべてを確認する必要があります.数秒でもそれらを見逃すわけにはいきません (たとえば、絶えず変化する衛星の地理データ)。
複雑で応答性の高い WPF UI を実現するための正しいツールまたは何らかの方法を特定するのを手伝ってください。Dispatcher.PushFrame() ですか?