private async void ListViewOnLoaded(object sender, RoutedEventArgs e) { if (!(_listView.ItemsPanelRoot is ItemsStackPanel itemsStackPanel)) { return; } _itemsStackPanel = itemsStackPanel; _scrollViewer = VisualTreeHelperUtils.Child <ScrollViewer>(_listView); // This event handler loads more items when scrolling. _scrollViewer.ViewChanged += ScrollViewerOnViewChanged; // This event handler loads more items when size is changed and there is more // room in ListView. _itemsStackPanel.SizeChanged += ItemsStackPanelOnSizeChanged; await LoadMoreItemsAsync(itemsStackPanel); }
private async void btnSend_Click(SplitButton sender, SplitButtonClickEventArgs args) { if (isTutorialPlaying) { var root = VisualTreeHelperUtils.FindParent <MainPage>(this); if (root != null) { root.TutorialStepDone(); } } else { IsEnabled = false; IsLoading = true; await Task.Run(async() => { // Figure out who will be feedbacked if (CurrentBatch.Teachers.Count == 0) // If user didn't load teachers we gonna { CurrentBatch.Teachers = await Provider.GetFeedbackEntries(); } var filtered = await GetFilteredTeacher(); var includedTeacher = filtered.Where(x => !CurrentBatch.ExcludeTeachers.Any(p => p.ID == x.ID)).Select(x => SendFeedback(x)).ToList(); int count = includedTeacher.Count; int ftcount = 0; while (includedTeacher.Count() > 0) { var finishedTask = await Task.WhenAny(includedTeacher); ftcount++; await Dispatcher.RunIdleAsync(x => FBStatusCount = $"{ftcount}/{count}"); includedTeacher.Remove(finishedTask); } }); IsEnabled = true; IsLoading = false; } }