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);
         }
     }
 }
示例#4
0
        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);
                }
            }
        }