protected override void RestoringVisit(DataGridContext sourceContext, CollectionViewGroup group, object[] namesTree, int groupLevel, bool isExpanded, bool isComputedExpanded) { if (sourceContext != m_rootDataGridContext) { throw new InvalidOperationException("Group does not belong to the root DataGridContext."); } if (groupLevel > m_maxGroupLevel) { return; } GroupNamesTreeKey groupNamesTreeKey = new GroupNamesTreeKey(namesTree); bool wasExpanded; if (m_groupsStateDictionary.TryGetValue(groupNamesTreeKey, out wasExpanded)) { if (wasExpanded) { sourceContext.ExpandGroup(group, true); } else { sourceContext.CollapseGroup(group, true); } } else if (m_stopAtFirstCollapsedGroup) { sourceContext.CollapseGroup(group, true); } }