Exemplo n.º 1
0
        //

        public AnimeListViewModel(ISettingsRepository settings, IAnimeService animeService)
        {
            _animeService = animeService;
            Settings      = settings;

            //

            Find = new FindViewModel();
            Find.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName.Equals("Text"))
                {
                    if (Find.Text.Equals(""))
                    {
                        Animes = new ObservableCollection <Anime>(_animeService.FilteredAndSorted());
                    }
                    else
                    {
                        Animes =
                            new ObservableCollection <Anime>(
                                _animeService.FilteredAndSorted().Where(
                                    a => a.Name.ToLower().Contains(Find.Text.ToLower())));
                    }
                }
            };

            FilterText = Settings.FilterBy;
            Animes     = new ObservableCollection <Anime>(_animeService.FilteredAndSorted());

            //

            SelectionChangedCommand = new RelayCommand <IList>(items =>
            {
                if (items == null)
                {
                    return;
                }
                SelectedAnimes = items.Cast <Anime>().ToList();
            });

            FindToggleCommand = new RelayCommand(() => Find.Toggle());

            AddCommand         = new RelayCommand(Add);
            AddMultipleCommand = new RelayCommand(AddMultiple);
            EditCommand        = new RelayCommand(Edit);
            DeleteCommand      = new RelayCommand(Delete);
            SearchCommand      = new RelayCommand(Search);
            CopyCommand        = new RelayCommand(() =>
            {
                Clipboard.Clear();
                Clipboard.SetText(string.Join(", ", SelectedAnimes.Select(c => c.Title)));
            });
        }