采用MVVM的模式,xaml的代码
<lvc:LineSeries Values="{Binding Path1Flowrate}" LineSmoothness="0" StrokeThickness="0.7" ScalesYAt="0" Stroke="Blue" Fill="Transparent" PointGeometrySize="0.1"/>
.cs文件
private readonly ChartValues<float> path1Flowrate = new ChartValues<float>();
public ChartValues<float> Path1Flowrate
{
get
{
return path1Flowrate;
}
}
在livechart的源代码中ChartValues的定义
public class ChartValues<T> : NoisyCollection<T>, IChartValues, INoisyCollection, IList, ICollection, IEnumerable, INotifyPropertyChanged, INotifyCollectionChanged
因为已经实现了相应的Changed接口,所以理论上说在Path1Flowrate中添加或者删除数据的时候,UI会相应的变化。但是在.cs文件中
调用path1Flowrate.Add(data.FlowRate)时UI经常不能及时更新,必须要用((INoisyCollection)path1Flowrate).Add(data.FlowRate);才可以。从源代码上看如果直接调用.Add方法,那么是调用了IList的Add方法所以没有通知UI刷新。用((INoisyCollection)path1Flowrate).Add(data.FlowRate);调用通知UI的Add方法。
网友评论