private async Task OnAddToFavoritesCommandExecuted(object arg1, object arg2) { TrackingData trackingData = (TrackingData)arg2; StopAndRoutePair stopAndRoute = trackingData.StopAndRoute; var trackingDataViewModel = this.MainPage.ViewModel as ITrackingDataViewModel; if (trackingDataViewModel != null) { if (trackingData.IsFavorite) { // Un-favorite all routes that match this tracking data: foreach (var currentTrackingData in trackingDataViewModel.RealTimeData) { if (string.Equals(trackingData.RouteId, currentTrackingData.RouteId, StringComparison.OrdinalIgnoreCase) && string.Equals(trackingData.StopId, currentTrackingData.StopId, StringComparison.OrdinalIgnoreCase)) { currentTrackingData.IsFavorite = false; } } await Favorites.RemoveAsync(stopAndRoute); } else { foreach (var currentTrackingData in trackingDataViewModel.RealTimeData) { if (string.Equals(trackingData.RouteId, currentTrackingData.RouteId, StringComparison.OrdinalIgnoreCase) && string.Equals(trackingData.StopId, currentTrackingData.StopId, StringComparison.OrdinalIgnoreCase)) { currentTrackingData.IsFavorite = true; } } await Favorites.AddAsync(stopAndRoute); } await Favorites.PersistAsync(); } }