Использование XamDataChart в WPF для отображения сигнала

Я работаю над проектом генератора сигналов, и мне очень трудно понять, как работает Infragistics XamDataChart.

В проекте используется WPF и модель MVVM, где MainWindow привязан к ViewModel, которая получает все свои данные из класса модели (в моем случае SigGenChannel.cs), все значения сигналов, синхронизация и обновление выполняются в модели. класс и полностью привязан к MainWindow, где у меня есть текстовое поле, отображающее текущее значение (значение сигнала), оно автоматически обновляется через 100 мс.

поэтому у меня есть два значения: текущее значение сигнала (CurrentValue) и текущее время (CurrentStepTime), как я могу использовать XamDataChart для сопоставления этих двух точек данных и заставить его обновляться с той же скоростью, что и текстовое поле, и отображать данные на графике как сигнальная волна?

Спасибо за любую помощь, и, пожалуйста, дайте мне знать, если вам нужны какие-либо конкретные фрагменты кода.


person Balaal    schedule 01.05.2013    source источник


Ответы (1)


XamDataChart автоматически обновит визуальный элемент для серии, если вы измените элементы связанной коллекции, при условии, что связанная коллекция реализует INotifyCollectionChanged. Если вы не хотите отображать эффект «Прокручивающееся окно», вы должны добавить новые точки в конец коллекции и удалить точки из заголовка коллекции, таким образом данные будут прокручиваться справа налево.

Поскольку ваша ось X — это ВРЕМЯ, у вас есть два варианта настройки серии. Вы можете либо использовать CategoryXAxis, который обрабатывает время как строковые значения, и каждая точка данных равноудалена от предыдущей (однако это уместно, если у вас постоянная частота дискретизации), либо вы можете использовать CategoryDateTimeXAxis, если у вас нет постоянная частота дискретизации, и вы хотите, чтобы значения отображались точно в тех позициях по горизонтали, которые соответствовали бы их временному значению. В любом случае вы должны привязать данные к ItemsSource оси, чтобы ось знала, сколько элементов существует, и могла получать метки. В случае CategoryXAxis вы должны указать, что метки должны исходить из CurrentStepTime, но для CategoryDateTimeXAxis вы должны дополнительно указать, что CurrentStepTime следует использовать для DateTimeMemberPath.

Недостаток использования CategoryDateTimeXAxis заключается в том, что он менее эффективен, чем CategoryXAxis, поэтому, если вам не нужна выборка с непостоянным временем, я бы придерживался последнего.

В любом случае вы будете создавать серию строк (или других категорий), привязывая данные к ItemsSource и задавая для ValueMemberPath значение CurrentValue.

Я предполагаю, что этот образец может прояснить ситуацию: http://www.infragistics.com/products/silverlight/sample/data-chart/#/binding-real-time-data

person Graham Murray    schedule 02.05.2013
comment
Спасибо! наконец, я заставил его работать, создав наблюдаемую коллекцию и удалив первую точку после того, как 10 точек данных были добавлены в коллекцию, и привязав эту коллекцию к диаграмме данных. - person Balaal; 14.05.2013