0

我正在研究一个信号发生器项目,我发现很难理解 Infragistics XamDataChart 的工作原理。

该项目使用 WPF 和一个 MVVM 模型,其中 MainWindow 绑定到一个 ViewModel,它从模型类(在我的例子中为 SigGenChannel.cs)获取其所有数据,所有信号值和定时和刷新都在模型中完成类,并一直绑定到 MainWindow,在那里我有一个显示当前值(信号值)的文本字段,它在 100 毫秒时自动刷新。

所以我拥有的两个值是当前信号值 (CurrentValue) 和当前时间 (CurrentStepTime),我如何使用 XamDataChart 映射这两个数据点并让它以与文本字段相同的速率刷新并显示数据在图表上作为信号波?

感谢您的帮助,如果您需要任何特定的代码片段,请告诉我

4

1 回答 1

2

如果您更改绑定集合的项目,XamDataChart 将自动刷新系列的视觉对象,前提是绑定集合实现 INotifyCollectionChanged。如果您不想显示“滚动窗口”效果,您可以在集合的末尾添加新点,并从集合的头部删除点,这样数据就会出现从右到左的滚动。

由于您的 X 轴是 TIME,因此您有两个选项来设置系列。您可以使用 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

于 2013-05-02T05:57:06.950 回答