У меня очень сложный пользовательский интерфейс с постоянно изменяющейся строкой состояния с несколькими типами статусных сообщений и пользовательский интерфейс со сложным элементом управления диаграммой и загруженной ориентировочной географической картой.
Теперь контекст данных для них небольшие, но сложные области имеют одинаково сложные модели представления, такие как StatusBarVM, ChartingVM, GeoMapVM и т. д. Они реализуют INotifyPropertyChanged и ObservableCollections.
Рассчитывая мои обновления, я вижу, что у меня есть около 5000 элементов пользовательского интерфейса (метки, индикаторы выполнения, точки данных диаграммы, bgcolorsbrush и т. д.), которые изменяются со скоростью 1000 обновлений элементов данных в секунду.
Каков наилучший способ добиться этого массового обновления данных в пользовательском интерфейсе WPF?
Способна ли модель привязки WPF для такого рода огромных обновления? Если да, то как? Потому что я считаю, что в моем случае это не оптимально. Я также использую bgworker (для индикаторов выполнения) и DIspatcher BeginInvoke ... но дело в том, что даже в этом случае обновления действительно вешают поток пользовательского интерфейса, поскольку сообщения диспетчера ставятся в очередь в ожидании завершения.
Я не могу реализовать виртуализации, так как статусы отображаются в реальном времени, и я должен видеть их все в пользовательском интерфейсе передо мной ... Я не могу позволить себе пропустить их даже на пару секунд (например, постоянное изменение географических данных спутника).
Пожалуйста, помогите мне чтобы найти правильный инструмент или какой-то способ создать сложный, но очень отзывчивый пользовательский интерфейс WPF. Это Dispatcher.PushFrame ()?