Inheritance: IDataTemplateSelector, IDataTemplateSelectorOverrides
Example #1
0
        public virtual CGSize GetItemSize(UICollectionView collectionView, NSIndexPath indexPath)
        {
            DataTemplate itemTemplate = GetTemplateForItem(indexPath);

            if (_currentSelector != Owner.ItemTemplateSelector)
            {
                // If the templateSelector has changed, clear the cache
                _currentSelector = Owner.ItemTemplateSelector;
                _templateCache.Clear();
                _templateCells.Clear();
            }

            var size = GetTemplateSize(itemTemplate, NativeListViewBase.ListViewItemElementKindNS);

            if (size == CGSize.Empty)
            {
                // The size of the template is usually empty for items that have not been displayed yet when using ItemTemplateSelector.
                // The reason why we can't measure the template is because we do not resolve it,
                // as it would require enumerating through all items of a possibly virtualized ItemsSource.
                // To ensure a first display (after which they will be properly measured), we need them to have a non-empty size.
                size = new CGSize(44, 44);                 // 44 is the default MinHeight/MinWidth of ListViewItem/GridViewItem on UWP.
            }

            return(size);
        }
Example #2
0
 protected virtual void OnContentTemplateSelectorChanged(DataTemplateSelector dataTemplateSelector1, DataTemplateSelector dataTemplateSelector2)
 {
     if (IsContentPresenterBypassEnabled)
     {
         // In case there's code that happen to be here.
     }
 }
Example #3
0
 private void OnContentTemplateSelectorChanged(DataTemplateSelector dataTemplateSelector1, DataTemplateSelector dataTemplateSelector2)
 {
 }
 /// <summary>
 /// Provides derived classes an opportunity to handle changes
 /// to the EditableItemTemplateSelector property.
 /// </summary>
 /// <param name="oldEditableItemTemplateSelector">The old EditableItemTemplateSelector value</param>
 /// <param name="newEditableItemTemplateSelector">The new EditableItemTemplateSelector value</param>
 private void OnEditableItemTemplateSelectorChanged(
     DataTemplateSelector oldEditableItemTemplateSelector, DataTemplateSelector newEditableItemTemplateSelector)
 {
 }
Example #5
0
 protected virtual void OnItemTemplateSelectorChanged(DataTemplateSelector oldItemTemplateSelector, DataTemplateSelector newItemTemplateSelector)
 {
     SetNeedsUpdateItems();
 }
        /// <summary>
        /// Prepares the content control for use in an ItemsControl.
        /// </summary>
        /// <param name="this">The this.</param>
        /// <param name="item">The item.</param>
        /// <param name="itemTemplate">The item template.</param>
        /// <param name="itemTemplateSelector">The item template selector.</param>
        public static void PrepareContentControl(
            this ContentControl @this,
            object item,
            DataTemplate itemTemplate,
            DataTemplateSelector itemTemplateSelector)
        {
            if (item != @this)
            {
                if ([email protected](ContentControl.ContentProperty))
                {
                    @this.Content = item;
                }

                if (itemTemplate != null)
                {
                    @this.SetValue(ContentControl.ContentTemplateProperty, itemTemplate);
                }
                if (itemTemplateSelector != null)
                {
                    @this.SetValue(ContentControl.ContentTemplateSelectorProperty, itemTemplateSelector);
                }
            }
        } 
        protected override void OnContentTemplateSelectorChanged(DataTemplateSelector oldContentTemplateSelector, DataTemplateSelector newContentTemplateSelector)
        {
            base.OnContentTemplateSelectorChanged(oldContentTemplateSelector, newContentTemplateSelector);

            if (!_changingTemplates)
            {
                this.SlimContentTemplateSelector = this.ContentTemplateSelector;
            }
        }
        /// <summary>
        /// Provides derived classes an opportunity to handle changes
        /// to the EditableContentTemplateSelector property.
        /// </summary>
        /// <param name="oldEditableContentTemplateSelector">The old EditableContentTemplateSelector value</param>
        /// <param name="newEditableContentTemplateSelector">The new EditableContentTemplateSelector value</param>
        private void OnEditableContentTemplateSelectorChanged(
            DataTemplateSelector oldEditableContentTemplateSelector, DataTemplateSelector newEditableContentTemplateSelector)
        {
            if (this.IsSelected)
            {
                _changingTemplates = true;
                this.ContentTemplateSelector = newEditableContentTemplateSelector;
                _changingTemplates = false;
            }

            _isEditable = true;
        }
Example #9
0
 protected override void OnItemTemplateSelectorChanged(DataTemplateSelector oldItemTemplateSelector, DataTemplateSelector newItemTemplateSelector)
 {
     base.OnItemTemplateSelectorChanged(oldItemTemplateSelector, newItemTemplateSelector);
     Refresh();
 }
Example #10
0
        private void AddItem(DataTemplateSelector datatemplateSelector, object item)
        {
            var presenter = IoC.Container.Resolve<MapItem>();
            presenter.RenderTransformOrigin = new Point(.5, .5);
            presenter.DataContext = item;

            var dataTemplate = datatemplateSelector.SelectTemplate(item, presenter);
            presenter.ContentTemplate = dataTemplate;

            _childControls.Add(item, presenter);
            _mapControl.Children.Add(presenter);

            var latitudeBinding = new Binding
            {
                Path = new PropertyPath(LocationAwareDataTemplate.GetLatitudePath(dataTemplate))
            };
            presenter.SetBinding(MapItem.LatitudeProperty, latitudeBinding);

            var longitudeBinding = new Binding
            {
                Path = new PropertyPath(LocationAwareDataTemplate.GetLongitudePath(dataTemplate))
            };
            presenter.SetBinding(MapItem.LongitudeProperty, longitudeBinding);
        }
 private void OnItemTemplateSelectorChanged(DataTemplateSelector p)
 {
     if (listBox == null) return;
     listBox.ItemTemplateSelector = p;
 }
Example #12
0
 protected override void OnItemTemplateSelectorChanged(DataTemplateSelector oldItemTemplateSelector, DataTemplateSelector newItemTemplateSelector)
 {
     base.OnItemTemplateSelectorChanged(oldItemTemplateSelector, newItemTemplateSelector);
 }
Example #13
0
 protected virtual void IItemsControlOverrides.OnItemTemplateSelectorChanged([In] DataTemplateSelector oldItemTemplateSelector, [In] DataTemplateSelector newItemTemplateSelector);