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));
        }