private async Task SaveImage() { if (SelectedImage.Angle != 0) { Picture img = new Picture { ImageUri = SelectedImage.ImageUri, Angle = SelectedImage.Angle }; int imgPos = ThumbnailCollection.View.CurrentPosition; IsImageSaving = true; await _imageProvider.SaveImageAsync(img.ImageUri, img.Angle); IsImageSaving = false; _thumbnailCollection.RemoveAt(imgPos); // delay to reclaim the deleted image memory await Task.Delay(2); _thumbnailCollection.Insert(imgPos, new Thumbnail { ImageUri = img.ImageUri }); Thumbnail selectedThumbnail = _thumbnailCollection.First(thumbnail => thumbnail.ImageUri == img.ImageUri); ThumbnailCollection.View.MoveCurrentTo(selectedThumbnail); } }