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(); } }