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