flowdocument reader에는 pagenumber 속성이 있습니다. 그러나 해당 속성은 읽기 전용입니다. flowdocument reader에서 특정 페이지 번호로 이동하는 방법이 있습니까? 도움을주십시오.WPF의 코드를 통해 흐름 문서 판독기에서 특정 페이지 번호로 이동하는 방법?
감사합니다.
flowdocument reader에는 pagenumber 속성이 있습니다. 그러나 해당 속성은 읽기 전용입니다. flowdocument reader에서 특정 페이지 번호로 이동하는 방법이 있습니까? 도움을주십시오.WPF의 코드를 통해 흐름 문서 판독기에서 특정 페이지 번호로 이동하는 방법?
감사합니다.
사용자를 페이징 디스플레이로 제한하려는 경우 FlowDocumentPageViewer를 대신 사용하십시오. GoToPage() 메소드가 있습니다. 어떤 이유로 GoToPage()가 FlowDocumentReader에서 제공되지 않는 것 같습니다. 이것은 FlowDocumentReader가 항상 페이징이 의미있는 (사용자가 연속 스크롤보기를 선택할 수있는) 모드가 아니며, 의미있는 경우 자체 UI를 제공하기 때문입니다.
NavigationCommands.GoToPage 명령을 보내보십시오. 그러나 이것은 FlowDocumentPageViewer 및 DocumentViewer에서 작동하는 것으로 문서화되어 있습니다. FlowDocumentReader에서 테스트하지 않았습니다. 당신이 FlowDocumentReader에 포함 된 FlowDocument의 블록을 추적 할 경우
는 당신은 간단하게 사용할 수있는 것보다 :
이// 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();
덕분에, 나에 확인하자 리더. – Ershad
다시 한번 감사드립니다. FlowDocumentPageViewer를 사용합니다. – Ershad