我有一个显示在telerik radchart中的缓冲区列表。 它显示正确,但当一个(或多个)缓冲区更新时,我想更新图表以反映新状态。 我唯一能做的就是从头开始重新创建图表,这是一个非常简单的解决方案,但不是很聪明...... 所以我的问题是,当一个映射为DataSeries的集合发生更改时,是否存在特殊的RadChart类型或某些选项以使图表自动更新。 有人可以帮忙吗?
以下是我用来创建图表的代码:
private void createChart()
{
//Set axis stuff and clear old configuration here
//Create a dataseries for each values to draw
foreach (ChannelKeyValueConfiguration channelKeyValue in this.Device.Configuration.ChannelConfigurations)
{
IChannel channel = this.Device.Channels[channelKeyValue.Name];
DataSeries serie = new DataSeries();
serie.Definition = new LineSeriesDefinition();
serie.LegendLabel = channel.Description;
int i = 0;
int elNumber = channel.Measure.Buffer.Count; //Neeeded to set xAxis values
DateTime minTime = channel.Measure.TimeStamp.Value.AddMilliseconds(-1 * elNumber * channel.Measure.PollingTime); //Neeeded to set xAxis values
foreach (double point in channel.Measure.Buffer) //Buffer is a Queue<T> that i use as data provider. It updates each x seconds.
{
i++;
serie.Add(new DataPoint() { XValue = minTime.AddMilliseconds( i * channel.Measure.PollingTime).ToOADate(), YValue = point });
}
RadTimeChart.DefaultView.ChartArea.DataSeries.Add(serie);
}
}
然后我有一个应该更新图表的事件处理程序。由于我不知道如何实现它,它只是重新创建它以便更新。
void StatusChanged(object sender, EventArgs e)
{
Dispatcher.BeginInvoke(new Action(delegate
{
createChart();
}));
}
请提供一些关于我如何更好地处理更新的想法。 提前谢谢!
答案 0 :(得分:0)
经过大量的搜索和测试后,我发现telerik的图表很慢,如果不使用Queue来破坏你的图表,有时会使用内存开始频繁增加。 然而,他们确实提供了一些非常好的examples in their site,就像实时数据一样,这正是我所寻找的。 p>