Обновление Telerik Chart при изменении данных - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть список буферов, которые я отображаю в 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();
        }));
    }

Пожалуйста, дайте некоторую идею о том, как я могу обрабатывать обновления лучше Заранее спасибо!

1 Ответ

0 голосов
/ 11 февраля 2012

После долгих поисков и тестов я обнаружил, что диаграммы telerik работают медленно, и иногда используемая память начинает увеличиваться, если вы не используете Queue для создания диаграммы.Тем не менее, они приводят несколько очень хороших примеров на своем сайте , например, пример Live Data, и это в значительной степени то, что я искал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...