public DataGridPageManagerEnumerator( DataGridPageManagerBase dataGridPageManagerBase )
      {
        if( dataGridPageManagerBase == null )
          throw new ArgumentNullException( "dataGridPageManagerBase" );

        m_dataGridPageManagerBase = dataGridPageManagerBase;

        VirtualList[] orderedVirtualLists =
          m_dataGridPageManagerBase.m_virtualListVSCollectionViewGroupDictionary.Keys.OrderBy(
            virtualList => m_dataGridPageManagerBase.m_virtualListVSCollectionViewGroupDictionary[ virtualList ].StartGlobalIndex ).ToArray();

        m_orderedVirtualListEnumerators = new VirtualListEnumerator[ orderedVirtualLists.Length ];

        for( int i = 0; i < orderedVirtualLists.Length; i++ )
        {
          m_orderedVirtualListEnumerators[ i ] = ( VirtualListEnumerator )( ( IEnumerable )orderedVirtualLists[ i ] ).GetEnumerator();
        }
      }
            public bool MoveNext()
            {
                // No need to check the VirtualPageManager's version.  The sub VirtualLists' Enumerator will take care of it.
                while (m_currentEnumeratorIndex < m_orderedVirtualListEnumerators.Length)
                {
                    VirtualListEnumerator enumerator = m_orderedVirtualListEnumerators[m_currentEnumeratorIndex];

                    enumerator.MoveNext();

                    if (!enumerator.AfterEnd)
                    {
                        m_currentItem = enumerator.Current;
                        return(true);
                    }
                    else
                    {
                        // Reached the end of this enumerator.  Let's increment the currentEnumeratorIndex.
                        m_currentEnumeratorIndex++;
                    }
                }

                m_currentItem = null;
                return(false);
            }