Vector changed EventArgs
Inheritance: IVectorChangedEventArgs
Esempio n. 1
0
        private void HandleItemAdded(int newStartingIndex, object newItem)
        {
            if (_filter != null && !_filter(newItem))
            {
                return;
            }
            if (_sortDescriptions.Any())
            {
                _sortProperties.Clear();
                newStartingIndex = _view.BinarySearch(newItem, this);
                if (newStartingIndex < 0)
                {
                    newStartingIndex = ~newStartingIndex;
                }
            }
            else if (_filter != null)
            {
                if (_sourceList == null)
                {
                    HandleSourceChanged();
                    return;
                }
                var visibleBelowIndex = 0;
                for (int i = newStartingIndex; i < _sourceList.Count; i++)
                {
                    if (!_filter(_sourceList[i]))
                    {
                        visibleBelowIndex++;
                    }
                }
                newStartingIndex = _view.Count - visibleBelowIndex;
            }
            _view.Insert(newStartingIndex, newItem);
            if (newStartingIndex <= _index)
            {
                _index++;
            }
            var e = new VectorChangedEventArgs(CollectionChange.ItemInserted, newStartingIndex, newItem);

            OnVectorChanged(e);
        }
Esempio n. 2
0
        private void HandleItemRemoved(int oldStartingIndex, object oldItem)
        {
            if (_filter != null && !_filter(oldItem))
            {
                return;
            }
            if (oldStartingIndex < 0 || oldStartingIndex >= _view.Count || !Equals(_view[oldStartingIndex], oldItem))
            {
                oldStartingIndex = _view.IndexOf(oldItem);
            }
            if (oldStartingIndex < 0)
            {
                return;
            }
            _view.RemoveAt(oldStartingIndex);
            if (oldStartingIndex <= _index)
            {
                _index--;
            }
            var e = new VectorChangedEventArgs(CollectionChange.ItemRemoved, oldStartingIndex, oldItem);

            OnVectorChanged(e);
        }