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); }
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); }