我正在研究一个信号发生器项目,我发现很难理解Infragistics XamDataChart是如何工作的。
该项目使用WPF和MVVM模型,其中MainWindow绑定到ViewModel,ViewModel从模型类获取其所有数据(在我的情况下为SigGenChannel.cs),所有信号值和时间以及刷新都在进行在模型类中,并一直绑定到MainWindow,在那里我有一个显示当前值(信号值)的文本字段,它是100ms的自动清理。
所以我拥有的两个值是当前信号值(CurrentValue)和当前时间(CurrentStepTime),我如何使用XamDataChart映射这两个数据点并使其以与文本字段相同的速率刷新将图表上的数据显示为信号波?
感谢您的帮助,如果您需要任何特定的代码段,请告诉我们
答案 0 :(得分:2)
如果更改绑定集合的项目,XamDataChart将自动刷新系列的可视化,前提是绑定集合实现INotifyCollectionChanged。如果您不想显示“滚动窗口”效果,您可以在集合的末尾添加新点,并从集合的头部删除点,这样数据就会从右向左滚动。< / p>
由于您的X轴是TIME,因此您有两个选项来设置系列。您可以使用CategoryXAxis,它将时间视为字符串值,并且每个数据点与前一个数据点等距(如果您有恒定的采样率,这是合适的),或者如果您有非数据点,则可以使用CategoryDateTimeXAxis恒定采样率,您希望值精确地出现在水平位置,等于它们的时间值。在任何一种情况下,您都可以将数据绑定到轴的ItemsSource,以便轴知道有多少项并可以检索标签。对于CategoryXAxis,您将指示标签应来自CurrentStepTime,但对于CategoryDateTimeXAx,您还要指定CurrentStepTime应该用于DateTimeMemberPath。
使用CategoryDateTimeXAxis的缺点是效率低于CategoryXAxis,所以除非你需要非恒定时间采样,否则我会坚持使用后者。
在任何一种情况下,您都将创建一个行(或其他类别)系列,将数据绑定到ItemsSource,并将ValueMemberPath设置为CurrentValue。
我认为这个样本可能会进一步阐明:http://www.infragistics.com/products/silverlight/sample/data-chart/#/binding-real-time-data