void Play(object obj)
        {
            if (!MatchEnded)
            {
                _isPlaying = true;

                OnPropertyChanged(nameof(IsPaused));
                P1_Point_Command.ChangeCanExecute();
                P2_Point_Command.ChangeCanExecute();
                P1_Ace_Command.ChangeCanExecute();
                P2_Ace_Command.ChangeCanExecute();
                P1_Fault_Command.ChangeCanExecute();
                P2_Fault_Command.ChangeCanExecute();
                P1_ForehandWinner_Command.ChangeCanExecute();
                P2_ForehandWinner_Command.ChangeCanExecute();
                P1_BackhandWinner_Command.ChangeCanExecute();
                P2_BackhandWinner_Command.ChangeCanExecute();
                P1_ForehandUnforcedError_Command.ChangeCanExecute();
                P2_ForehandUnforcedError_Command.ChangeCanExecute();
                P1_BackhandUnforcedError_Command.ChangeCanExecute();
                P2_BackhandUnforcedError_Command.ChangeCanExecute();
                P1_ForcedError_Command.ChangeCanExecute();
                P2_ForcedError_Command.ChangeCanExecute();
            }
        }
        void P2_Won_Game()
        {
            if (match.FirstPlayerToServe)
            {
                match.P2_BreakPointsWon++;
                OnPropertyChanged(nameof(P2_BreakPointsWon));
                OnPropertyChanged(nameof(BreakPointsWon));
            }

            P1_ActualScore                    = "0";
            P2_ActualScore                    = "0";
            match.P1_Advantage                = false;
            match.P2_Advantage                = false;
            match.TiebreakEnabled             = false;
            FirstPlayerToServe                = match.DidFirstPlayerServeLastGame;
            match.DidFirstPlayerServeLastGame = !match.DidFirstPlayerServeLastGame;

            switch (ActualSet)
            {
            case 0:
                P2_FirstSet = (match.P2_GamesWon[0] + 1).ToString();
                break;

            case 1:
                P2_SecondSet = (match.P2_GamesWon[1] + 1).ToString();
                break;

            case 2:
                P2_ThirdSet = (match.P2_GamesWon[2] + 1).ToString();
                break;

            case 3:
                P2_FourthSet = (match.P2_GamesWon[3] + 1).ToString();
                break;

            case 4:
                P2_FifthSet = (match.P2_GamesWon[4] + 1).ToString();
                break;
            }

            if ((match.P2_GamesWon[ActualSet] >= match.GamesToWin && match.P2_GamesWon[ActualSet] >= match.P1_GamesWon[ActualSet] + 2) || (match.P2_GamesWon[ActualSet] > match.GamesToWin && match.P1_GamesWon[ActualSet] == match.GamesToWin)) // if set won
            {
                match.P2_SetsWon++;
                if (match.P2_SetsWon >= match.SetsToWin) // if match won
                {
                    MatchEnded = true;
                    IsPlaying  = false;

                    OnPropertyChanged(nameof(FirstPlayerToServe));
                    OnPropertyChanged(nameof(SecondPlayerToServe));

                    P1_Point_Command.ChangeCanExecute();
                    P2_Point_Command.ChangeCanExecute();
                }
                else
                {
                    ActualSet++;
                }
            }

            if (match.P2_GamesWon[(int)ActualSet] == match.GamesToWin && match.P1_GamesWon[(int)ActualSet] == match.GamesToWin)
            {
                match.TiebreakEnabled = true;
            }
        }