コード例 #1
0
        private async void LoadMovieGroups()
        {
            IsBusy = true;
            MovieGroups.Clear();
            HasThrownError = false;
            ErrorMessage   = string.Empty;

            try
            {
                await _servicesManager.GetMovieGroupsAsync(onEachMovieGroupCallback : movieGroup =>
                {
                    if (movieGroup != null && movieGroup.Movies != null && movieGroup.Movies.Any())
                    {
                        var movieGroupWrapper = new MovieGroupWrapper(movieGroup, onMovieSelectedCallback: selectedMovie =>
                        {
                            ShowViewModel <MovieDetailViewModel>(selectedMovie);
                        });
                        MovieGroups.Add(movieGroupWrapper);
                        IsBusy = false;
                    }
                });
            }
            catch (Exception)
            {
                HasThrownError = true;
                ErrorMessage   = "An error has occurred while loading some of the movies";               // TODO: Use a Resx file
                IsBusy         = false;
            }
        }
コード例 #2
0
        public GroupedMoviesViewModel(
            IMessenger messenger,
            IMovieRepository movieRepository)
        {
            MovieRepository = movieRepository;

            if (MovieRepository != null)
            {
                MovieGroups = MovieRepository.LoadMovies()
                              .GroupBy(m => m.Genre)
                              .Select(g => new MovieGroupViewModel(messenger)
                {
                    Title         = g.Key.ToString(),
                    Movies        = g.ToList(),
                    GroupImageUrl = g.First().ImageUrl
                });
            }

            MovieTappedCommand = new RelayCommand <Movie>((movie) =>
            {
                var movieGroup = MovieGroups.First(mg => mg.Movies.Contains(movie));
                messenger.Send <MovieSelectedMessage>(new MovieSelectedMessage {
                    Movie = movie, MovieGroup = movieGroup
                });
            });

            MovieSelectedCommand = new RelayCommand(() =>
            {
                var movieGroup = MovieGroups.First(mg => mg.Movies.Contains(SelectedMovie));
                messenger.Send <MovieSelectedMessage>(new MovieSelectedMessage {
                    Movie = SelectedMovie, MovieGroup = movieGroup
                });
            });
        }