private async void CreateAndFillGrid(Grid grid, int moviegenre) { // First we need to get the movies the user liked var userMovies = await ReaderWriter.GetUserMovies(email); var movieQueue = FillTheQueueWithMovies(userMovies); UserMovies = movieQueue.ToList(); movieQueue = new Queue <Movie>(movieQueue.Where(x => x.ImagePath != null).OrderBy(x => Guid.NewGuid())); if (moviegenre != 0) { if (movieQueue.Any(x => x.Genre_Ids.Contains(moviegenre))) { movieQueue = new Queue <Movie>(movieQueue.Where(x => x.Genre_Ids.Contains(moviegenre))); } } var fixedMovieQueueCount = movieQueue.Count; for (int i = 0; i < fixedMovieQueueCount / 2 + fixedMovieQueueCount % 2; i++) { grid.RowDefinitions.Add(new RowDefinition { Height = 260 }); for (int j = 0; j < 2; j++) { if (movieQueue.Count < 1) { return; } var currentMovie = movieQueue.Dequeue(); Frame frame = new Frame { BorderColor = Color.Black, HasShadow = true, Padding = 0, Margin = 0, Content = new Image { Source = "https://image.tmdb.org/t/p/w500" + currentMovie.ImagePath, Aspect = Aspect.AspectFill } }; var eventOnTap = new TapGestureRecognizer(); eventOnTap.Tapped += (s, e) => { DisplayAlert(currentMovie.Name + " (" + currentMovie.ReleaseDate.Substring(0, 4) + ")", currentMovie.Overview, "Close"); }; frame.GestureRecognizers.Add(eventOnTap); grid.Children.Add(frame, j, i); //row, column } } }