2017-10-09 4 views
1

私はLiveChartを使用していくつかの問題があります。 リアルタイムデータをセリコレクションに追加します。livecharts複数のシリーズキャストエラー

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

は、これは私のXAMLです。 は、私はセリエプロパティを作成しました:

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

はコンストラクタでそれを初期化:

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 
}); 
} 

debugChannelSelectedはメッセンジャーで受信されます。

100ms毎に私は私のセリエコレクションに新しいダブルを追加するつもりです:

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; 
} 

が、私はserie.Values.AddRange(dbtValues)でキャストエラーを取得しています。 。 解決方法はありますか?

Tia。

答えて

0

私は次のようにSeries.Add方法を変更しました:

    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 
        }); 

は、今私はAddRangeを使用することができますよ。

関連する問題