Массовые обновления сложного пользовательского интерфейса

У меня очень сложный пользовательский интерфейс с постоянно изменяющейся строкой состояния с несколькими типами статусных сообщений и пользовательский интерфейс со сложным элементом управления диаграммой и загруженной ориентировочной географической картой.

Теперь контекст данных для них небольшие, но сложные области имеют одинаково сложные модели представления, такие как StatusBarVM, ChartingVM, GeoMapVM и т. д. Они реализуют INotifyPropertyChanged и ObservableCollections.

Рассчитывая мои обновления, я вижу, что у меня есть около 5000 элементов пользовательского интерфейса (метки, индикаторы выполнения, точки данных диаграммы, bgcolorsbrush и т. д.), которые изменяются со скоростью 1000 обновлений элементов данных в секунду.

Каков наилучший способ добиться этого массового обновления данных в пользовательском интерфейсе WPF?

Способна ли модель привязки WPF для такого рода огромных обновления? Если да, то как? Потому что я считаю, что в моем случае это не оптимально. Я также использую bgworker (для индикаторов выполнения) и DIspatcher BeginInvoke ... но дело в том, что даже в этом случае обновления действительно вешают поток пользовательского интерфейса, поскольку сообщения диспетчера ставятся в очередь в ожидании завершения.

Я не могу реализовать виртуализации, так как статусы отображаются в реальном времени, и я должен видеть их все в пользовательском интерфейсе передо мной ... Я не могу позволить себе пропустить их даже на пару секунд (например, постоянное изменение географических данных спутника).

Пожалуйста, помогите мне чтобы найти правильный инструмент или какой-то способ создать сложный, но очень отзывчивый пользовательский интерфейс WPF. Это Dispatcher.PushFrame ()?

5
задан H.B. 15 September 2011 в 20:08
поделиться