/// <summary> /// Removes all views that are not longer part of the ItemSource to avoid duplicated views. /// </summary> void DisposeOldElements() { List <Xamarin.Forms.View> removableItems; if (ItemSource == null) { //Remove all items if the new ItemSource is empty. removableItems = ContentGrid.Children.ToList(); Debug.WriteLine("Remove all items from gallerie."); } else { //Only remove items that are no longer part of the new ItemSource removableItems = ContentGrid.Children.Where(o => !ItemSource.Contains(o.BindingContext)).ToList(); } //Remove items and dispose the handler while (removableItems.Any()) { var view = removableItems.First(); ((TapGestureRecognizer)view.GestureRecognizers[0]).Tapped -= GestureRekognizerOnTapped; ContentGrid.Children.Remove(view); removableItems.RemoveAt(0); } }