Вы должны реализовать IValueConverter
, чтобы извлечь эти точки из ряда. Судя по всему, точки зарыты глубоко внутри «коллекции». Коллекция имен здесь вводит в заблуждение, поскольку SeriesCollection
- это больше модель данных, чем фактическая коллекция. Вся библиотека реализована довольно запутанно.
Какой тип данных у вас на самом деле в качестве точек данных, зависит от вашей реализации. К сожалению, вы не показываете эти сведения.
В этом примере предполагается, что элемент данных имеет тип Point
:
ViewModel.cs
class ViewModel
{
public ViewModel()
{
var chartValues = new ChartValues<Point>();
// Create a sine
for (int x = 0; x < 361; x++)
{
var point = new Point() {X = x, Y = Math.Sin(x * Math.PI / 180)};
chartValues.Add(point);
}
this.SeriesCollection = new SeriesCollection
{
new LineSeries
{
Configuration = new CartesianMapper<Point>()
.X(point => point.X)
.Y(point => point.Y),
Title = "Series X",
Values = chartValues,
Fill = Brushes.DarkRed
}
};
}
}
SeriesCollectionToPointsConverter.cs
class SeriesCollectionToPointsConverter : IValueConverter
{
#region Implementation of IValueConverter
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) =>
value is SeriesCollection seriesCollection
? seriesCollection.SelectMany(series => series.Values as ChartValues<Point>)
: Binding.DoNothing;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) =>
throw new NotSupportedException();
#endregion
}
MainWindow.xaml
<Window>
<Window.DataContext>
<ViewModel />
</Window.DataContext>
<Window.Resources>
<SeriesCollectionToPointsConverter x:Key="SeriesCollectionToPointsConverter" />
</Window.Resources>
<DataGrid ItemsSource="{Binding SeriesCollection, Converter={StaticResource SeriesCollectionToPointsConverter}}" />
</Window>