如何刷新WPF图表I';m用于显示一些数据(WPF工具包图表)

如何刷新WPF图表I';m用于显示一些数据(WPF工具包图表),wpf,collections,charts,toolkit,Wpf,Collections,Charts,Toolkit,当集合更改时,如何更新WPF图表?我正在使用WPF图表(System.Windows.Controls.DataVisualization.Toolkit.dllversion版本3.5.50211.1)绘制一些简单的数据。数据的类如下所示: public class EngineMeasurementCollection : Collection<EngineMeasurement> { } public class EngineMeasurement { pu

当集合更改时,如何更新WPF图表?我正在使用WPF图表(System.Windows.Controls.DataVisualization.Toolkit.dllversion版本3.5.50211.1)绘制一些简单的数据。数据的类如下所示:

public class EngineMeasurementCollection : Collection<EngineMeasurement> 
{ 

} 
public class EngineMeasurement 
{ 
    public int TimeStamp { get; set;}
    public int Speed { get; set; } 
    public int Torque { get; set; } 
    public int Power { get; set; } 
}  
让自己回到GUI线程上。然后我打电话:

m_ctrlLineSeriesTorque.ItemsSource = m_TorqueCollection; 
尝试获取要更新的图表。我已经确认我进入了这个密码。我还验证了,如果我只是将一些值放入EngineMeasurementCollection的构造函数中,就可以显示图表。如何在向集合添加更多值时更新图表

在某个地方,我看到图表本身可能有一个“刷新”方法。我看不出来。另外,我看到EngineMeasurementCollection可能应该是一个“可观察的集合”,EngineMeasurement应该实现一些接口。是吗

谢谢,
Dave

是的,您的
EngineMeasurementCollection
应该是一个。这样,除了向集合中添加(或删除)项之外,您就没有其他事情要做了,WPF绑定系统将负责其余的更新图表。这就是您应该使用可观察集合的原因。

是的,您的
EngineMeasurementCollection
应该是可观察集合。这样,除了向集合中添加(或删除)项之外,您就没有其他事情要做了,WPF绑定系统将负责其余的更新图表。这就是您应该使用可观察集合的原因。

我突然想到,我的EngineMeasurementCollection,m_TorqueCollection是在MainWindow.xaml.cs中定义的,我是从另一个线程上调用的事件访问它的。假设,当我向集合中添加EngineMeasurements时,我需要执行某种线程锁定?这里有一些最佳实践吗?我突然想到,我的EngineMeasurementCollection,m_Torquencollection是在MainWindow.xaml.cs中定义的,我是从另一个线程上调用的事件访问它的。假设,当我向集合中添加EngineMeasurements时,我需要执行某种线程锁定?这里有一些最佳实践吗?+1正如Miky D所说。让它成为一个可观察的集合。或者在EnginerMeasurementCollection是属性的类中实现INotifyProeprtyChanged,并引发属性更改通知。正如Miky D所说的+1。让它成为一个可观察的集合。或者在EnginerMeasurementCollection作为属性的类中实现INotifyProeprtyChanged,并引发属性更改通知。
m_ctrlLineSeriesTorque.ItemsSource = m_TorqueCollection;