public static IList <object> GetItems(this Group group) { CollectionViewGroup collectionViewGroup = group.CollectionViewGroup; if (collectionViewGroup == null) { return(null); } return(collectionViewGroup.GetItems()); }
internal static object GetLastLeafItem(this CollectionViewGroup collectionViewGroup) { IList <object> items = collectionViewGroup.GetItems(); if (items.Count == 0) { return(null); } var item = items[items.Count - 1]; var subGroup = item as CollectionViewGroup; return((subGroup != null) ? subGroup.GetLastLeafItem() : item); }
internal static IEnumerable <object> GetLeafItems(this CollectionViewGroup collectionViewGroup) { foreach (var item in collectionViewGroup.GetItems()) { if (item is CollectionViewGroup) { foreach (var subItem in (( CollectionViewGroup )item).GetLeafItems()) { yield return(subItem); } } else { yield return(item); } } }
public GeneratorNode CreateGroupGeneratorNode( CollectionViewGroup collectionViewGroup, GeneratorNode parent, GeneratorNode previous, GeneratorNode next, GroupConfiguration groupConfig) { Debug.Assert(collectionViewGroup != null, "collectionViewGroup cannot be null for CreateGroupGeneratorNode()"); GroupGeneratorNode node = new GroupGeneratorNode(collectionViewGroup, parent, groupConfig); if (previous != null) { previous.Next = node; } node.Previous = previous; if (next != null) { next.Previous = node; } node.Next = next; node.IsExpanded = groupConfig.InitiallyExpanded; if (collectionViewGroup.IsBottomLevel == false) { IList <object> subItems = collectionViewGroup.GetItems(); this.RegisterNodeCollectionChanged( ( INotifyCollectionChanged )subItems, new NotifyCollectionChangedEventHandler(node.OnCollectionChanged)); node.CollectionChanged += m_groupsChangedHandler; } node.ExpansionStateChanged += m_expansionStateChangedHandler; node.IsExpandedChanging += m_isExpandedChangingHandler; node.IsExpandedChanged += m_isExpandedChangedHandler; node.AdjustItemCount(node.ItemCount); node.BuildNamesTree(); return(node); }
internal static IEnumerable <CollectionViewGroup> GetSubGroups(this CollectionViewGroup collectionViewGroup) { foreach (var item in collectionViewGroup.GetItems()) { var subGroup = item as CollectionViewGroup; //No need to check every items, they will be all Groups or not. if (subGroup == null) { break; } yield return(subGroup); foreach (var subSubgroup in subGroup.GetSubGroups()) { yield return(subGroup); } } }