protected CollectionViewSourceBase([NotNull] UICollectionView collectionView, string itemTemplate = AttachedMemberConstants.ItemTemplate) { Should.NotBeNull(collectionView, nameof(collectionView)); _collectionView = TouchToolkitExtensions.CreateWeakReference(collectionView); _itemTemplateProvider = new DataTemplateProvider <ICollectionCellTemplateSelector>(collectionView, itemTemplate); var controllerView = collectionView.FindParent <IViewControllerView>(); if (controllerView != null && !(controllerView is IMvvmNavigationController)) { _listener = ReflectionExtensions.CreateWeakEventHandler <CollectionViewSourceBase, EventArgs>(this, (adapter, o, arg3) => adapter.OnDisposeController(o, arg3)); controllerView.Mediator.DisposeHandler += _listener.Handle; } UseAnimations = collectionView .GetBindingMemberValue(AttachedMembers.UICollectionView.UseAnimations) .GetValueOrDefault(true); ScrollPosition = collectionView .GetBindingMemberValue(AttachedMembers.UICollectionView.ScrollPosition) .GetValueOrDefault(UICollectionViewScrollPosition.Top); }