Example #1
0
            /// <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();
                }
            }
Example #2
0
            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);
            }