2017-02-11 2 views

Antwort

2

Sie können scrollviewer von flowdocumentscrollviewer aus aufrufen. Hier ist beispielsweise

private void MainWindow_Loaded(object sender, RoutedEventArgs e) 
    { 
     var scrollViewer = FindScrollViewer(flowDocumentScrollViewer); 
     scrollViewer.ScrollToBottom(); 
    } 

    public static ScrollViewer FindScrollViewer(FlowDocumentScrollViewer flowDocumentScrollViewer) 
    { 
     if (VisualTreeHelper.GetChildrenCount(flowDocumentScrollViewer) == 0) 
     { 
      return null; 
     } 

     // Border is the first child of first child of a ScrolldocumentViewer 
     DependencyObject firstChild = VisualTreeHelper.GetChild(flowDocumentScrollViewer, 0); 
     if (firstChild == null) 
     { 
      return null; 
     } 

     Decorator border = VisualTreeHelper.GetChild(firstChild, 0) as Decorator; 

     if (border == null) 
     { 
      return null; 
     } 

     return border.Child as ScrollViewer; 
    } 
+0

Nun, das sicher funktioniert. Ist es üblich, dies einfach zu tun, oder möchten Sie im Allgemeinen nicht bis zum Ende eines Flowdocumentscrollviewer scrollen? – PPFY

+0

Es ist eine Art Utility-Methode für die Funktion, die nicht ausgesetzt ist. Ich sehe kein Problem damit. –

1

Oder können Sie die bereitgestellte Antwort here, verwenden und die Suche nach dem Scroll:

public static void ScrollToEnd(FlowDocumentScrollViewer fdsv) 
{ 
    ScrollViewer sc = FindVisualChildren<ScrollViewer>(fdsv).First() as ScrollViewer; 
    if (sc != null) 
     sc.ScrollToEnd(); 
} 


public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject 
{ 
    if (depObj != null) 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) 
     { 
      DependencyObject child = VisualTreeHelper.GetChild(depObj, i); 
      if (child != null && child is T) 
      { 
       yield return (T)child; 
      } 

      foreach (T childOfChild in FindVisualChildren<T>(child)) 
      { 
       yield return childOfChild; 
      } 
     } 
    } 
} 
Verwandte Themen