Пример #1
0
        /// <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);
            }
        }