/// <summary> /// Called by the CallEventTargetHandler delegate, which itself is called by the source event. /// </summary> /// <param name="sender">The event sender, as provided by the event source.</param> /// <param name="e">The event args, as provided by the event source.</param> public void Handler(object sender, object e) { WeakEventBridge bridge = null; lock (this) { if (_bridge != null) { bridge = _bridge.Target as WeakEventBridge; } } if (bridge == null || !bridge.CallBindInfoHandler(sender, e, _bridgeHandlerIndex, _bridgeHandlerId)) { Unbind(); } }
public FilteredCollection(ICollection <TIn> observed, ObservableCollection <TOut> filtered, Func <TIn, bool> predicate, Func <TOut, TKey> order, IComparer <TKey> comparer) : base(filtered) { if (!(observed is INotifyCollectionChanged)) { throw new ArgumentException("observed"); } _filtered = filtered; _predicate = predicate; _order = order; _comparer = comparer ?? Comparer <TKey> .Default; _bridge = new WeakEventBridge(); _bridge.Bind(observed, "CollectionChanged", WeakEventBridge.AsDelegate(observed_CollectionChanged)); InitFrom(observed); }