2013-05-01 58 views
0

我正在開發一個信號發生器項目,我發現很難理解Infragistics XamDataChart是如何工作的。在WPF中使用XamDataChart顯示信號

該項目使用WPF和MVVM模型,其中MainWindow綁定到ViewModel,它從模型類(SigGenChannel.cs獲取所有數據),所有的信號值和時間和刷新正在在模型類中完成,並一直返回到MainWindow,在那裏我有一個顯示當前值(信號值)的文本字段,它在100ms自動重新消隱。

所以我得到的兩個值是當前信號值(CurrentValue)和當前時間(CurrentStepTime),如何使用XamDataChart來映射這兩個數據點並使其以與文本字段相同的速率進行刷新並將圖表上的數據顯示爲信號波形?

感謝您的幫助,並請讓我知道如果你需要任何特定的代碼片段

回答

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

+0

謝謝!我最終通過創建一個可觀察的集合並在將10個數據點添加到集合後移除第一個點並將該集合綁定到數據檢查器 – Balaal 2013-05-14 15:27:54