protected void AddWeakEventListener(INotifyPropertyChanged source, PropertyChangedEventHandler handler) { if (source == null) { throw new ArgumentNullException("source"); } if (handler == null) { throw new ArgumentNullException("handler"); } PropertyChangedEventListener listener = new PropertyChangedEventListener(source, handler); propertyChangedListeners.Add(listener); PropertyChangedEventManager.AddListener(source, listener, ""); }
protected void RemoveWeakEventListener(INotifyPropertyChanged source, PropertyChangedEventHandler handler) { if (source == null) { throw new ArgumentNullException("source"); } if (handler == null) { throw new ArgumentNullException("handler"); } PropertyChangedEventListener listener = propertyChangedListeners.LastOrDefault(l => l.Source == source && l.Handler == handler); if (listener != null) { propertyChangedListeners.Remove(listener); PropertyChangedEventManager.RemoveListener(source, listener, ""); } }