Binding ChartValue 界面不能及时更新

2019-08-05  本文已影响0人  bettyxue

采用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方法。

上一篇 下一篇

猜你喜欢

热点阅读