コード例 #1
0
        private void ItemsSourceOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                for (var i = 0; i < e.NewItems.Count; ++i)
                {
                    var model = (IDataSourceViewModel)e.NewItems[i];
                    if (PassesFilter(model))
                    {
                        var sourceIndex   = e.NewStartingIndex + i;
                        var filteredIndex = FindFilteredIndex(sourceIndex);
                        FilteredItemsSource.Insert(filteredIndex, model);
                    }
                }

                break;

            case NotifyCollectionChangedAction.Remove:
                foreach (IDataSourceViewModel model in e.OldItems)
                {
                    FilteredItemsSource.Remove(model);
                }
                break;

            case NotifyCollectionChangedAction.Reset:
                FilteredItemsSource.Clear();
                break;

            default:
                throw new NotImplementedException();
            }

            UpdateNoDataSourcesMessage();
        }
コード例 #2
0
        private void ItemsSourceOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                for (int i = 0; i < e.NewItems.Count; ++i)
                {
                    var model = (IDataSourceViewModel)e.NewItems[i];
                    if (PassesFilter(model))
                    {
                        int sourceIndex   = e.NewStartingIndex + i;
                        int filteredIndex = FindFilteredIndex(sourceIndex);
                        FilteredItemsSource.Insert(filteredIndex, model);
                    }
                }
                break;

            case NotifyCollectionChangedAction.Remove:
                foreach (IDataSourceViewModel model in e.OldItems)
                {
                    FilteredItemsSource.Remove(model);
                }
                break;

            /*case NotifyCollectionChangedAction.Reset:
             * foreach (IDataSourceViewModel model in _dataSourceCopy)
             * {
             *      model.PropertyChanged -= DataSourceOnPropertyChanged;
             * }
             * _dataSourceCopy.Clear();
             * FilteredItemsSource.Clear();
             * break;*/

            default:
                throw new NotImplementedException();
            }
        }