2009-10-26 12 views

Répondre

1

Si vous souhaitez restreindre l'affichage des pages à vos utilisateurs, utilisez à la place FlowDocumentPageViewer: il s'agit d'une méthode GoToPage(). Pour une raison quelconque, GoToPage() ne semble pas être proposé sur FlowDocumentReader; Je suppose que c'est parce que FlowDocumentReader n'est pas toujours dans un mode où la pagination est significative (l'utilisateur peut sélectionner une vue de défilement continue), et fournit sa propre interface utilisateur pour cela quand elle est significative.

Vous pouvez essayer de lui envoyer la commande NavigationCommands.GoToPage, mais cela est uniquement documenté comme fonctionnant sur FlowDocumentPageViewer et DocumentViewer; Je ne l'ai pas testé sur FlowDocumentReader.

+0

merci pour la réponse, laissez-moi vérifier dans lecteur. – Ershad

+0

Merci encore une fois. Je vais utiliser FlowDocumentPageViewer .. – Ershad

2

Si vous garder une trace des blocs sur la FlowDocument contenue dans le FlowDocumentReader, que vous pouvez simplement utiliser:

// Getting a block by index 
YourReader.Document.Blocks.ElementAt(index).BringIntoView(); 

// Showing Last Block 
YourReader.Document.Blocks.LastBlock.BringIntoView(); 

// Showing the last Inline 
(YourReader.Document.Blocks.LastBlock as Paragraph).Inlines.LastInline.BringIntoView(); 

Cela fonctionne seulement sur les ViewingModes page du FlowDocumentReader.

si vous whould souhaitez le faire sur le mode de défilement, vous devez parcourir l'arbre visuel et rechercher le ScrollViewer, somthing comme ceci:

 public static ScrollViewer FindScroll(Visual visual) 
     { 
      if (visual is ScrollViewer) 
       return visual as ScrollViewer; 

      ScrollViewer searchChiled = null; 
      DependencyObject chiled; 

      for (int i = 0; i < VisualTreeHelper.GetChildrenCount(visual); i++) 
      { 
       chiled = VisualTreeHelper.GetChild(visual, i); 
       if (chiled is Visual) 
        searchChiled = FindScroll(chiled as Visual); 
       if (searchChiled != null) 
        return searchChiled; 
      } 

      return null; 
     } 

ScrollViewer scroller = FindScroll(YourReader as Visual); 
if (scroller != null) 
    (scroller as ScrollViewer).ScrollToBottom();