bool IWeakEventListener.ReceiveWeakEvent(Type managerType, object sender, EventArgs e) { if (typeof(CollectionChangedEventManager) == managerType) { Debug.Assert(sender == m_groupLevelDescriptions); switch ((( NotifyCollectionChangedEventArgs )e).Action) { case NotifyCollectionChangedAction.Move: case NotifyCollectionChangedAction.Remove: break; default: if (GroupLevelDescriptionFinder.TryFind(m_groupLevelDescriptions, m_groupDescription, out m_groupLevelDescription)) { this.RaisePropertyChanged("GroupLevelDescription"); this.Dispose(); } break; } return(true); } return(false); }
internal GroupLevelDescriptionFinder(GroupDescription groupDescription, IEnumerable <GroupLevelDescription> groupLevelDescriptions) { if (groupDescription == null) { throw new ArgumentNullException("groupDescription"); } if (groupLevelDescriptions == null) { throw new ArgumentNullException("groupLevelDescriptions"); } if (!GroupLevelDescriptionFinder.TryFind(groupLevelDescriptions, groupDescription, out m_groupLevelDescription)) { m_groupDescription = groupDescription; m_groupLevelDescriptions = groupLevelDescriptions; this.RegisterCollectionChanged(( INotifyCollectionChanged )groupLevelDescriptions); } }
internal LateGroupLevelDescription( GroupDescription groupDescription, IEnumerable<GroupLevelDescription> groupLevelDescriptions ) { if( groupDescription == null ) throw new ArgumentNullException( "groupDescription" ); var finder = new GroupLevelDescriptionFinder( groupDescription, groupLevelDescriptions ); m_groupDescription = groupDescription; m_groupLevelDescription = finder.GroupLevelDescription; if( m_groupLevelDescription == null ) { m_finder = finder; m_finder.PropertyChanged += new PropertyChangedEventHandler( this.OnGroupLevelDescriptionFound ); } else { finder.Dispose(); PropertyChangedEventManager.AddListener( m_groupLevelDescription, this, string.Empty ); } }
internal LateGroupLevelDescription(GroupDescription groupDescription, IEnumerable <GroupLevelDescription> groupLevelDescriptions) { if (groupDescription == null) { throw new ArgumentNullException("groupDescription"); } var finder = new GroupLevelDescriptionFinder(groupDescription, groupLevelDescriptions); m_groupDescription = groupDescription; m_groupLevelDescription = finder.GroupLevelDescription; if (m_groupLevelDescription == null) { m_finder = finder; m_finder.PropertyChanged += new PropertyChangedEventHandler(this.OnGroupLevelDescriptionFound); } else { finder.Dispose(); PropertyChangedEventManager.AddListener(m_groupLevelDescription, this, string.Empty); } }