public virtual void OnCellSelectionChanged(UICollectionViewCell cell, bool selected, bool setFromBinding)
 {
     var collectionView = CollectionView;
     if (!setFromBinding || collectionView == null)
         return;
     UpdateSelectedItemInternal(collectionView, cell.GetDataContext(), selected);
     var path = IndexPathForCell(collectionView, cell);
     if (path == null)
         return;
     if (selected)
         collectionView.SelectItem(path, false, UICollectionViewScrollPosition.None);
     else
         collectionView.DeselectItem(path, false);
 }
        public virtual bool UpdateSelectedBindValue(UICollectionViewCell cell, bool selected)
        {
            var collectionView = CollectionView;
            if (collectionView == null || collectionView.AllowsMultipleSelection)
                return selected;

            if (!collectionView.AllowsSelection)
                return false;
            if (HasMask(cell, InitializingStateMask))
            {
                if (Equals(cell.GetDataContext(), SelectedItem))
                    return true;
                return selected && SelectedItem == null;
            }
            return selected;
        }