当集合发生变化时,如何更新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; }
}
在我的Mainform中,我收到有关事件回调的新数据。这又回到了另一个线程。我查看数据以查看它是否有新的TimeStamp。如果是,我将它添加到我的收藏中。然后我尽职尽责地打电话给
Dispatcher.Invoke(myDelegate, DispatcherPriority.Normal,null)
让自己回到GUI线程。然后我打电话给:
m_ctrlLineSeriesTorque.ItemsSource = m_TorqueCollection;
尝试让图表更新。我已经确认我已进入此代码。我还验证了如果我只是在EngineMeasurementCollection的构造函数中输入一些值,我就可以显示图表。当我向集合中添加更多值时,如何更新图表?
在某处我看到图表本身可能有“刷新”方法。我没有看到。另外,我看到也许EngineMeasurementCollection应该是一个“Observable集合”,EngineMeasurement应该实现一些接口。真?
谢谢, 戴夫
答案 0 :(得分:3)
是的,您的EngineMeasurmentCollection
应为ObservableCollection。然后,您将无需做任何事情,只需将项目添加(或删除)到集合中,WPF绑定系统将负责更新图表。这就是你应该使用可观察集合的原因。