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