2017-10-09 11 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"); } 
} 

생성자에서 초기화 다음 debugChannelSelected 메신저에 의해 수신

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

.

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)의 캐스트 오류를 ​​받고 있어요; . 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

티아.

답변

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를 사용할 수 있어요.