У меня есть список буферов, которые я отображаю в Telerik Radchart.
Он отображается правильно, но когда один (или более) из буферов обновляется, я хочу обновить диаграмму, чтобы отразить новое состояние.
Единственное, что я могу сделать, это воссоздать диаграмму с нуля, это очень простое решение, но не очень умное ...
Поэтому мой вопрос заключается в том, есть ли специальный тип RadChart или какая-либо опция, чтобы установить автоматическое обновление диаграммы, когда одна из коллекций отображается как DataSeries.
Кто-нибудь может помочь?
Вот код, который я использую для создания диаграммы:
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();
}));
}
Пожалуйста, дайте некоторую идею о том, как я могу обрабатывать обновления лучше
Заранее спасибо!