/// <summary> /// Dissociates group from parent collection. /// </summary> private void DetachParentCollection() { _parentCollectionChangedListener.Detach(); _parentCollection = null; if (_aggregateResultsChangedListener != null) _aggregateResultsChangedListener.Detach(); }
/// <summary> /// Sets the parent collection instance. /// </summary> /// <param name="collection">The parent collection instance.</param> public void SetParentCollection(GroupRecordKeyedCollection collection) { if (_parentCollection != null) DetachParentCollection(); _parentCollection = collection; _parentCollectionChangedListener = new CollectionChangedListener(this, _parentCollection) { OnEventAction = OnParentCollectionChanged, OnDetachAction = OnDetachParentCollectionChanged }; _parentCollection.CollectionChanged += _parentCollectionChangedListener.OnEvent; if (ParentGroup != null) { var parentGroupCode = GenerateGroupCode(ParentGroup); GroupRecord parentRecord; _parentCollection.TryGetValue(parentGroupCode, out parentRecord); ParentRecord = parentRecord; } }