private void NextQuestion()
        {
            // Update the score based on the current answers
            bool failed = false;

            foreach (var answ in CurrentQuestion.Answers)
            {
                if (answ.IsCorrect && !answ.IsChecked)
                {
                    failed = true;
                }
                if (!answ.IsCorrect && answ.IsChecked)
                {
                    failed = true;
                }
            }
            if (!failed)
            {
                _score++;
            }

            // Passed the last question
            if (_currentQuestionIndex >= _questions.Length - 1)
            {
                EndGame();
            }
            else
            {
                // Update current question
                _currentQuestionIndex++;
                CurrentQuestion     = _questions[_currentQuestionIndex];
                CurrentQuestionType = AnswerTemplateSelector.SelectTemplate(CurrentQuestion);
            }
        }
        public QuizWindowViewModel(ISessionService sessionService, IQuizDataService quizDataService, IWindowService windowService)
        {
            _sessionService  = sessionService;
            _quizDataService = quizDataService;
            _windowService   = windowService;

            var difficulty = _sessionService.GetDifficulty();

            _questions = quizDataService.GetQuestionsOfDifficulty(5, difficulty);

            CurrentQuestion     = _questions[_currentQuestionIndex];
            CurrentQuestionType = AnswerTemplateSelector.SelectTemplate(CurrentQuestion);
        }