private void CreateRaceColumns()
        {
            int challengeIndex = 0;

            foreach (var challengeStanding in _allChallengeStandings.ChallengeStandings)
            {
                if (!_dataView.CurrentSeason.ContainsChallenge(challengeStanding.Challenge.Id))
                {
                    continue;
                }

                var column = new DataGridTemplateColumn
                {
                    Header = UiUtils.GetTrackImage(challengeStanding.Challenge),
                    Width  = 96,
                };

                var dataTemplate = new DataTemplate();

                var gridFactory = new FrameworkElementFactory(typeof(Grid));

                FrameworkElementFactory textBlockFactory = CreateTextBlock(challengeIndex);
                FrameworkElementFactory ellipseFactory   = CreateEllipse(challengeIndex);

                gridFactory.AppendChild(ellipseFactory);
                gridFactory.AppendChild(textBlockFactory);

                dataTemplate.VisualTree = gridFactory;

                column.CellTemplate = dataTemplate;

                ChampionshipDataGrid.Columns.Add(column);
                challengeIndex++;
            }
        }