public void BookChanged(object sender, BookEventArgs e) { if (e.Book == null) { return; } switch (e.State) { case BookEventArgs.BookState.Added: var bookExistsAdded = FilteredBooks.Any( b => b.Id == e.Book.Id); if (!bookExistsAdded) { FilteredBooks.Add(e.Book); } NotifyPropertyChanged("FilterCount"); break; case BookEventArgs.BookState.Removed: var bookExistsRemoved = FilteredBooks.Any( b => b.Id == e.Book.Id); if (bookExistsRemoved) { FilteredBooks.Remove(e.Book); } NotifyPropertyChanged("FilterCount"); break; case BookEventArgs.BookState.Updated: //Remove book from list and re-add it var bookExistsUpdated = FilteredBooks.FirstOrDefault( b => b.FullPathAndFileName == e.Book.FullPathAndFileName); if (bookExistsUpdated != null) { var index = FilteredBooks.IndexOf(bookExistsUpdated); FilteredBooks.RemoveAt(index); FilteredBooks.Insert(index, e.Book); } else { FilteredBooks.Add(e.Book); } NotifyPropertyChanged("FilterCount"); break; } // FilteredBooks = new ObservableCollection<Book>(AllBooks); }
internal ObservableCollection <Book> FilterByTitleNotGrouped(string filterQuery) { var result = FilteredBooks.Where(x => x.Title.Contains(filterQuery)).ToList(); return(new ObservableCollection <Book>(result)); }