2017-10-09 5 views
1

J'ai des problèmes avec LiveCharts. Je vais ajouter des données en temps réel à une collection de série.livecharts erreur de moulage de plusieurs séries

Ceci est mon Xaml:

<lvc:CartesianChart DisableAnimations="True" 
              Hoverable="False" 
              DataTooltip="{x:Null}" 
              Series="{Binding Series}" 
              Zoom="Xy" 
              Width="1300" 
              /> 

. J'ai créé une propriété Série:

private SeriesCollection series; 
public SeriesCollection Series 
{ 
    get { return series; } 
    set { SetProperty(ref series, value, "Series"); } 
} 

initialisées dans le constructeur:

Series = new SeriesCollection(); 
Series.Add(new GLineSeries() 
{ 
    Name = debugChannelSelected.Name.Replace(' ', '_'), 
    Title = debugChannelSelected.Name, 
    Stroke = (Brush)new BrushConverter().ConvertFromString(debugChannelSelected.Color), 
            Values = new GearedValues<double>(), 
            Fill = Brushes.Transparent, 
            PointGeometry = null 
}); 
} 

le debugChannelSelected est reçu par Messenger.

Tous les 100ms Je vais ajouter un nouveau double à ma collection de série:

for (var j = 0; j < SelectedChannels.Count(); j++) 
{ 
if (SelectedChannels[j] != null) 
{ 
    var serie = 
     Series.FirstOrDefault(w => w.Title.Equals(SelectedChannels[j])); 

    for (var i = 0; i < dataSize; i++) 
    { 
     var dbt = Convert.ToDouble(rnd.Next(-1000, 10000)); 
     if (serie != null) 
     { 
      dbtValues[i] = dbt; 
      serie.Values.Add(dbt); 
      if (IsContinuousAcquisition && serie.Values.Count > 1000) 
      { 
       serie.Values.RemoveAt(0); 
      } 
     } 

    var dbtGear = dbtValues.AsGearedValues(); 
    serie.Values.AddRange(dbtValues); 
} 
else 
    break; 
} 

mais j'obtenir une erreur de casting dans serie.Values.AddRange (dbtValues); . Avez-vous des suggestions sur la façon de le résoudre?

Tia.

Répondre

0

J'ai changé la méthode Series.Add comme suit:

    Series.Add(new GLineSeries() 
        { 
         Name = debugChannelSelected.Name.Replace(' ', '_'), 
         Title = debugChannelSelected.Name, 
         Stroke = (Brush)new BrushConverter().ConvertFromString(debugChannelSelected.Color), 
         Values = new ChartValues<ObservableValue>(), 
         Fill = Brushes.Transparent, 
         PointGeometry = null 
        }); 

maintenant, je suis en mesure d'utiliser AddRange.