public object GenerateContainerForItem(ItemGenerationContext info, object containerType)
        {
            UIElement element = null;

            ListViewGroupHeader groupHeader = null;

            if (listViewGroupHeaderType.Equals(containerType))
            {
                groupHeader = this.owner.GetContainerForGroupHeader();
            }
            else if (object.Equals(listViewFrozenGroupHeaderType, containerType))
            {
                groupHeader = this.owner.GetContainerForGroupHeader(true);
            }

            if (groupHeader != null)
            {
                if (groupHeader.IsFrozen)
                {
                    // Frozen Headers are placed in different panel (not in childrens panel).
                    this.owner.frozenGroupHeadersHost.Children.Add(groupHeader);
                }
                else
                {
                    this.owner.childrenPanel.Children.Add(groupHeader);
                }

                return(groupHeader);
            }

            else
            {
                if (containerType != null)
                {
                    if (containerType.Equals(loadingDataControlType))
                    {
                        element = new ListViewLoadDataControl();
                        this.owner.loadMoreDataControl = element as ListViewLoadDataControl;
                    }
                    else if (containerType.Equals(listViewItemType))
                    {
                        var listViewItem = this.owner.GetContainerForItem();
                        listViewItem.ListView = this.owner;
                        element = listViewItem;
                    }
                    else
                    {
                        throw new ArgumentException("Unknown container type.");
                    }
                }
            }

            this.owner.childrenPanel.Children.Add(element);

            return(element);
        }
Exemple #2
0
        protected FrameworkElement PrepareGroupHeader(GroupHeaderItem headerItem, FrameworkElement lvParent)
        {
            var result = new ListViewGroupHeader()
            {
                Context       = headerItem,
                Content       = headerItem,
                Screen        = _parent.Screen,
                VisualParent  = lvParent,
                LogicalParent = lvParent
            };

            // Set this after the other properties have been initialized to avoid duplicate work
            // No need to set the LogicalParent because styles and content templates don't bind bindings
            result.Style           = MpfCopyManager.DeepCopyCutLVPs(GroupHeaderContainerStyle);
            result.ContentTemplate = MpfCopyManager.DeepCopyCutLVPs(GroupHeaderTemplate);
            return(result);
        }