示例#1
0
        /// <summary>
        ///     Updates a filter.
        /// </summary>
        protected virtual void UpdateFilterInternal(out bool shouldRaiseEvents)
        {
            FilterDelegate <T> currentFilter = _filter;

            if (currentFilter != null)
            {
                _filterCollection.Clear();
                for (int index = 0; index < Items.Count; index++)
                {
                    T item = Items[index];
                    if (currentFilter(item))
                    {
                        _filterCollection.Add(index, item);
                    }
                }
            }
            EventsTracker.AddEvent(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
            shouldRaiseEvents = true;
        }
        private void UpdateFilterInternal(OrderedListInternal <int, T> filterCollection, FilterDelegate <T> filter, NotificationType notificationType)
        {
            var currentFilter = filter;

            filterCollection.Clear();
            var items = GetItems();

            if (currentFilter != null)
            {
                for (var index = 0; index < items.Count; index++)
                {
                    var item = items[index];
                    if (currentFilter(item))
                    {
                        filterCollection.Add(index, item);
                    }
                }
            }
            OnCollectionChanged(Empty.ResetEventArgs, notificationType);
        }