2009-10-26 3 views

답변

1

사용자를 페이징 디스플레이로 제한하려는 경우 FlowDocumentPageViewer를 대신 사용하십시오. GoToPage() 메소드가 있습니다. 어떤 이유로 GoToPage()가 FlowDocumentReader에서 제공되지 않는 것 같습니다. 이것은 FlowDocumentReader가 항상 페이징이 의미있는 (사용자가 연속 스크롤보기를 선택할 수있는) 모드가 아니며, 의미있는 경우 자체 UI를 제공하기 때문입니다.

NavigationCommands.GoToPage 명령을 보내보십시오. 그러나 이것은 FlowDocumentPageViewer 및 DocumentViewer에서 작동하는 것으로 문서화되어 있습니다. FlowDocumentReader에서 테스트하지 않았습니다. 당신이 FlowDocumentReader에 포함 된 FlowDocument의 블록을 추적 할 경우

+0

덕분에, 나에 확인하자 리더. – Ershad

+0

다시 한번 감사드립니다. FlowDocumentPageViewer를 사용합니다. – Ershad

2

는 당신은 간단하게 사용할 수있는 것보다 :

// 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(); 

이것은 FlowDocumentReader의 페이지 ViewingModes에 작동합니다.

당신이 스크롤 모드에 그렇게 좋아 whould 경우, 당신은 시각적 트리를 아래로 이동하고있는 ScrollViewer를 검색해야하며,이 같은 뭔가를해야만 : 답장을

 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();