public void CleanGeneratorNode(GeneratorNode node) { HeadersFootersGeneratorNode headersFootersNode = node as HeadersFootersGeneratorNode; if (headersFootersNode != null) { this.CleanHeadersFootersNotification(headersFootersNode); } else { ItemsGeneratorNode itemsNode = node as ItemsGeneratorNode; if (itemsNode != null) { this.UnregisterNodeCollectionChanged(( INotifyCollectionChanged )itemsNode.Items); itemsNode.CollectionChanged -= m_itemsChangedHandler; } else { GroupGeneratorNode groupNode = node as GroupGeneratorNode; if (groupNode != null) { IList <object> subItems = groupNode.CollectionViewGroup.GetItems(); this.UnregisterNodeCollectionChanged(( INotifyCollectionChanged )subItems); groupNode.CollectionChanged -= m_groupsChangedHandler; groupNode.IsExpandedChanging -= m_isExpandedChangingHandler; groupNode.IsExpandedChanged -= m_isExpandedChangedHandler; } } } node.ExpansionStateChanged -= m_expansionStateChangedHandler; node.CleanGeneratorNode(); }
public void CleanGeneratorNode( GeneratorNode node ) { HeadersFootersGeneratorNode headersFootersNode = node as HeadersFootersGeneratorNode; if( headersFootersNode != null ) { this.CleanHeadersFootersNotification( headersFootersNode ); } else { ItemsGeneratorNode itemsNode = node as ItemsGeneratorNode; if( itemsNode != null ) { this.UnregisterNodeCollectionChanged( ( INotifyCollectionChanged )itemsNode.Items ); itemsNode.CollectionChanged -= m_itemsChangedHandler; } else { GroupGeneratorNode groupNode = node as GroupGeneratorNode; if( groupNode != null ) { IList<object> subItems = groupNode.CollectionViewGroup.GetItems(); this.UnregisterNodeCollectionChanged( ( INotifyCollectionChanged )subItems ); groupNode.CollectionChanged -= m_groupsChangedHandler; groupNode.IsExpandedChanging -= m_isExpandedChangingHandler; groupNode.IsExpandedChanged -= m_isExpandedChangedHandler; } } } node.ExpansionStateChanged -= m_expansionStateChangedHandler; node.CleanGeneratorNode(); }