Проблема с выводом Charts на WPF C#
Я собираюсь вывести диаграмму с использованием библиотеки LiveCharts. Нужно сделать так, чтоб на каждый месяц выводилось по три столбца с местами: первое, второе, третье - по вертикали должно отображаться количество занятых мест в месяце, по горизонтали - месяца. В легенде должные отображаться цветовые значения этих мест на диаграмме. Вот код разметки:
<Page x:Class="SportCompetitions.Pages.ClientPages.Results.StatMonthPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SportCompetitions.Pages.ClientPages.Results" xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
mc:Ignorable="d"
d:DesignHeight="485" d:DesignWidth="680" Loaded="Page_Loaded">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<TextBlock Text="Ваша статистика по занимаемым местам"
Foreground="White" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<lvc:CartesianChart Series="{Binding SeriesCollection}" LegendLocation="Top"
x:Name="StatisticsChart" Grid.Row="1" Margin="50">
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Месяцы" Labels="{Binding monthLabel}"/>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Количество мест" Labels="{Binding placeValue}"/>
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
<Button Content="Назад" Width="250" Grid.Row="2"
Height="40" Style="{StaticResource ButtonStyle}" Click="BackButton_Click"/>
<Button Content="←" Width="40" Grid.Row="1" HorizontalAlignment="Left" Margin="10,0,0,0"
Height="40" Style="{StaticResource ButtonStyle}" Click="PrewButton_Click"/>
</Grid>
</Page>
А далее сама реализация функционала:
namespace SportCompetitions.Pages.ClientPages.Results
{
public partial class StatMonthPage : Page
{
DB_SportCompetitsEntities db = new DB_SportCompetitsEntities();
User user;
public StatMonthPage(User us)
{
InitializeComponent();
user = us;
}
private void PrewButton_Click(object sender, RoutedEventArgs e)
{
}
private void BackButton_Click(object sender, RoutedEventArgs e)
{
NavigationService.GoBack();
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
var placeList = db.ResultReg.Where(u => u.RegEvent.ID_User == user.ID_User && u.TopEvent != null).GroupBy(t => new { t.TopEvent, t.RegEvent.Event.DateEnd.Month })
.Select(r => new { TopName = r.Key, Count = r.Select(grouped => grouped.ID_RegEvent).Distinct().Count()}).ToList();
SeriesCollection monthList1 = new SeriesCollection();
monthLabel = new[] { "Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек" };
foreach (var item in placeList)
{
monthList1.Add(new ColumnSeries
{
Title = string.Format("{0} место", item.TopName.TopEvent.ToString()),
Values = new ChartValues<int> { item.Count }
});
}
StatisticsChart.Series = monthList1;
StatisticsChart.LegendLocation = LegendLocation.Top;
StatisticsChart.ChartLegend.Foreground = Brushes.White;
StatisticsChart.ChartLegend.FontSize = 14;
StatisticsChart.ChartLegend.ContentStringFormat = string.Format("{0} место", StatisticsChart.ChartLegend.Content);
placeValue = value => value.ToString("N");
DataContext = this;
}
public SeriesCollection[] SeriesCollection { get; set; }
public string[] monthLabel { get; set; }
public Func<double, string> placeValue { get; set; }
}
}
Далее я прикрепляю фотографию того, что у меня выводится. Проблема в том, что я не могу отобразить места в нужные месяцы. По запросу я, так понимаю, получаю корректные данные, потому как первое место, находящееся в одном месяце не объединяется в количество с другим. Помогите, пожалуйста, решить эту проблему, я уже пятый день сижу над этим