我有一个非常复杂的 UI,其状态栏不断变化,其中包含多种类型的状态消息,并且 UI 具有复杂的图表控件和已加载的指示性地理地图。
现在这些小而复杂的区域的数据上下文具有同样复杂的 ViewModel,例如 StatusBarVM、ChartingVM、GeoMapVM 等……它们实现了 INotifyPropertyChanged 和 ObservableCollections。
计算我的更新,我发现我有大约 5000 个 UI 项(标签、进度条、图表数据点、bgcolorsbrushes 等),它们以每秒 1000 个数据项更新的速度快速变化。
在 WPF UI 上实现此批量数据更新的最佳方法是什么?
WPF 的绑定模型是否能够进行这种巨大的更新?如果有怎么办?因为我认为在我的情况下它不是最佳的。我也在使用 bgworker(用于进度条)并使用 DIspatcher BeginInvoke... 但关键是即使这样,更新也会挂起 UI 线程,因为调度程序消息正在排队等待完成。
我无法实现虚拟化,因为状态是实时的,我必须在我面前的 UI 上看到它们。即使几秒钟我也不能错过它们(例如不断变化的卫星地理数据)。
请帮助我确定正确的工具或某种方式来实现复杂但响应迅速的 WPF UI。是 Dispatcher.PushFrame() 吗?