protected override void OnPropertyChanged(string propertyName = null)
        {
            base.OnPropertyChanged(propertyName);

            if (string.IsNullOrWhiteSpace(propertyName))
            {
                return;
            }

            if (propertyName == BackgroundHighlightColorProperty.PropertyName)
            {
                _backgroundPaint.Color = BackgroundHighlightColor.ToSKColor();
                InvalidateSurface();
            }

            if (propertyName == SymbolColorProperty.PropertyName)
            {
                _symbolPaint.Color = SymbolColor.ToSKColor();
                InvalidateSurface();
            }

            // Do the animation just once
            if (propertyName == CurrentModeProperty.PropertyName || propertyName == CurrentStateProperty.PropertyName)
            {
                (_endSymbolPathA, _endSymbolPathB) = (CurrentMode, CurrentState) switch
                {
                    (DisplayMode.PlayPause, State.Paused) => (_playA, _playB),
                    (DisplayMode.PlayPause, State.Stopped) => (_playA, _playB),
                    (DisplayMode.PlayPause, State.Playing) => (_pauseA, _pauseB),
                    (DisplayMode.PlayStop, State.Paused) => (_playA, _playB),
                    (DisplayMode.PlayStop, State.Stopped) => (_playA, _playB),
                    (DisplayMode.PlayStop, State.Playing) => (_stopA, _stopB)
                };

                LaunchAnimation();
            }
        }