public async void ChapterSelectButton_Click(object sender, RoutedEventArgs e) { var chapterSelectionWindow = new ChapterSelectionWindow(reqsCollection); chapterSelectionWindow.ShowDialog(); if (chapterSelectionWindow.DialogResult == true) { Mouse.OverrideCursor = Cursors.Wait; if (chapterSelectionWindow.ClearPreviousTCs) { RefreshRequirementsDataGrid(); AllTCsListBox.SelectedItems.Clear(); RequirementsDataGrid.UpdateLayout(); } var selectedChapter = chapterSelectionWindow.Answer; Console.WriteLine(selectedChapter.chapter); await ShowOneChapter(selectedChapter.id, chapterSelectionWindow.SelectTCs); ChapterNameTextBlock.Text = selectedChapter.chapter; Mouse.OverrideCursor = Cursors.Arrow; } }
private async Task RefreshHelpers(bool horizontalRefresh, bool verticalRefresh, double horizontalOffset, double verticalOffset, double verticalChange = 0) { if (horizontalRefresh) { new List <ScrollViewer>() { GetScrollViewer(ReqHelperTop), GetScrollViewer(ReqHelperBottom) }.ForEach(x => x.ScrollToHorizontalOffset(horizontalOffset)); } if (verticalRefresh) { var datagridHeight = RequirementsDataGrid.ActualHeight; var rowHeight = RequirementsDataGrid.RowHeight; var firstRow = (int)verticalOffset; var lastRow = firstRow + (int)(datagridHeight / rowHeight) - 1; if (reqsCollection.AsParallel().Any(x => x.IsVisible == false)) { var firstVisible = RequirementsDataGrid.Items .IndexOf(RequirementsDataGrid.Items.Cast <RequirementSingleView>() .First(x => x.IsVisible == true)); var lastVisible = RequirementsDataGrid.Items .IndexOf(RequirementsDataGrid.Items.Cast <RequirementSingleView>() .Last(x => x.IsVisible == true)); if (lastVisible < lastRow) { lastRow = lastVisible + 1; } if (verticalChange < 0 && firstRow < firstVisible) { var scrollViewer = GetScrollViewer(RequirementsDataGrid); scrollViewer.ScrollToVerticalOffset(firstVisible); } else if (verticalChange > 0 && lastVisible < firstRow) { var scrollViewer = GetScrollViewer(RequirementsDataGrid); scrollViewer.ScrollToVerticalOffset(lastVisible); } } var selectedTCs = new List <int>(); foreach (int TC in AllTCsListBox.SelectedItems) { selectedTCs.Add(TC); } Parallel.ForEach(selectedTCs, TCSelected => { var TCSelectedString = TCSelected.ToString(); if (ReqTopHelperData[0].ContainsKey(TCSelectedString)) { var firstOccurence = RequirementsDataGrid.Items.Cast <RequirementSingleView>() .TakeWhile(x => x.TCIDsValue.Contains(TCSelected) != true) .Count(); if (firstOccurence < firstRow) { ReqTopHelperData[0][TCSelectedString] = true; } else { ReqTopHelperData[0][TCSelectedString] = false; } } if (ReqBottomHelperData[0].ContainsKey(TCSelectedString)) { var lastOccurence = RequirementsDataGrid.Items.Cast <RequirementSingleView>().Count() - RequirementsDataGrid.Items.Cast <RequirementSingleView>() .Reverse() .TakeWhile(x => x.TCIDsValue.Contains(TCSelected) != true) .Count(); if (lastOccurence > lastRow) { ReqBottomHelperData[0][TCSelectedString] = true; } else { ReqBottomHelperData[0][TCSelectedString] = false; } } }); } RequirementsDataGrid.UpdateLayout(); ReqHelperTop.Items.Refresh(); ReqHelperBottom.Items.Refresh(); }