private void Search(string ns, bool alwaysPaging = false) { var isPartial = false; var matchedSettings = allSettings.ForParse(); var settingCount = 0; if (ns.EndsWith(".")) { var settings = matchedSettings.Where(o => o.Namespace.StartsWith(ns)).ToList(); if (!alwaysPaging && (settings.Count() / 3 > appOptions.TruncateResultsOver)) { isPartial = true; matchedSettings = settings.Take(appOptions.TruncateResultsOver); settingCount = settings.Count; } else { matchedSettings = settings.ToList(); } } else { matchedSettings = matchedSettings.Where(o => o.Namespace == ns).ToList(); } var namespaces = matchedSettings.ToNamespaces().ToList(); var languages = allSettings.ToLanguages().ToList(); var languageGroups = new List <LanguageGroup>(); foreach (string n in namespaces) { var languageGroup = new LanguageGroup(n, languages); languageGroup.LoadSettings(matchedSettings.Where(o => o.Namespace == n).ToList()); languageGroups.Add(languageGroup); } pagingController.SwapData(languageGroups, isPartial); languageGroupContainer.ItemsSource = pagingController.PageData; pagingMessage.Text = pagingController.PageMessage; partialPagingButton.Visibility = isPartial ? Visibility.Visible : Visibility.Hidden; pagingButtons.Visibility = isPartial ? Visibility.Visible : Visibility.Hidden; if (isPartial) { partialPagingButton.Content = "Load " + settingCount / 3; } ContentScroller.ScrollToTop(); }
private void ScrollToSelection(out Rect rect) { Document.Selection.GetRect(PointOptions.Transform, out rect, out _); double verticalOffset = ContentScroller !.VerticalOffset, horizontalOffset = ContentScroller.HorizontalOffset, viewportHeight = ContentScroller.ViewportHeight - VerticalScrollBarMargin.Top, viewportWidth = ContentScroller.ViewportWidth, transformedVerticalOffset = rect.Top - verticalOffset; const double NegativeLeftOffsetBeforeSelection = 12; const double HorizontalScrollingThreshold = 20; const double RightOffsetAfterSelection = 32; // Calculate the target horizontal offset double?horizontal; if (rect.Left < horizontalOffset) { horizontal = rect.Left - NegativeLeftOffsetBeforeSelection; } else if (rect.Left > viewportWidth + horizontalOffset - HorizontalScrollingThreshold) { horizontal = rect.Left - viewportWidth + RightOffsetAfterSelection; } else { horizontal = null; } const double VerticalScrollingThreshold = 32; const double BottomOffsetBelowSelection = 32; // Calculate the target vertical offset double?vertical; if (transformedVerticalOffset < 0) { vertical = verticalOffset + transformedVerticalOffset; } else if (transformedVerticalOffset > viewportHeight - VerticalScrollingThreshold) { vertical = verticalOffset + (transformedVerticalOffset - viewportHeight) + BottomOffsetBelowSelection; } else { vertical = null; } // Scroll to selection ContentScroller.ChangeView(horizontal, vertical, null, false); }
private void LogPage_Loaded(object sender, RoutedEventArgs e) { ContentScroller.ScrollToVerticalOffset(LogText.ActualHeight); }
private void PagedUpdates() { languageGroupContainer.ItemsSource = pagingController.PageData; pagingMessage.Text = pagingController.PageMessage; ContentScroller.ScrollToTop(); }