После изменения кода, приведенного в документации на веб-сайте , у меня возникли проблемы с отображением SeriesCollection.Позвольте мне показать вам, что я сделал.
Во-первых, XAML:
<Grid>
<lvc:CartesianChart Series="{Binding GraphData.SeriesCollection}"
LegendLocation="Top">
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="VIs"></lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Players"></lvc:Axis>
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>
</Grid>
В моей ViewModel у меня есть пользовательский объект, хранящий информацию, которую я хочу привязать к этой диаграмме как:
public GraphModel GraphData { get; set; } = new GraphModel();
У меня есть кнопка для проверки моего кода.Нажатие на него запускает следующий код:
private void UpdateGraphStatistics()
{
var compdata = new List<double>();
var dqdata = new List<double>();
foreach (var item in Competitors)
{
if (!item.DQ)
{
compdata.Add(item.VIs);
}
else if (item.DQ)
{
dqdata.Add(item.VIs);
}
}
GraphData = new GraphModel(compdata, dqdata);
}
Для всех намерений и целей, этот код выше добавляет к двум спискам серию парных чисел, которые, как я определил, работает (так что это не проблема;SeriesCollection не пустой!)
Далее, GraphModel.Это большая проблема, в которой проблема, вероятно, кроется, но я не могу определить, где:
class GraphModel
{
public ChartValues<ObservablePoint> CompetitionData = new ChartValues<ObservablePoint>();
public ChartValues<ObservablePoint> DQData = new ChartValues<ObservablePoint>();
public SeriesCollection SeriesCollection { get; set; }
public GraphModel()
{
CreateSeriesCollection();
}
public GraphModel(List<double> competitionData, List<double> dqData)
{
ParseData(competitionData, dqData);
CreateSeriesCollection();
}
private void CreateSeriesCollection()
{
SeriesCollection = new SeriesCollection
{
new LineSeries
{
Title = "Competition Data (VIs/Player Number)",
Values = CompetitionData,
LineSmoothness = 0.6,
PointForeground = Brushes.Blue
},
new LineSeries
{
Title = "DQ Data (VIs/Player Number)",
Values = DQData,
LineSmoothness = 1,
PointForeground = Brushes.Red
}
};
}
private void ParseData(List<double> compData, List<double> dqData)
{
// Convert competitionData into observable points
int count = 1;
foreach (var item in compData)
{
CompetitionData.Add(new ObservablePoint(count++, item));
}
// Convert dqdata into observable points
int offsetX = CompetitionData.Count;
foreach (var item in dqData)
{
DQData.Add(new ObservablePoint(offsetX++, item));
}
}
}
Метод ParseData()
ранее использовался в коде, отличном от WPF, поэтому я знаю, что это вряд ли является причинойдля вопроса.
Я до сих пор не решил, что происходит не так.Я неправильно связываю свои данные?
Редактировать
Для контекста я знаю, что SeriesCollection в GraphModel
определенно содержит информацию, которую я тоже хочу, как и должно быть, так как этот кодболее или менее то же самое с версией программного обеспечения не-WPF, в которой я впервые попробовал.