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