UWP
프로젝트에 RichTextBlock
이 있는데, 긴 문자열을 내용으로 설정하면 3 초 같은 콘텐츠가 표시되는 데 오래 걸립니다. 웹을 검색 한 결과 virtualization
이 없기 때문에 모든 콘텐츠를 렌더링하려고합니다. WPF 및 RichTextBox에 문제가있는 것 같습니다.긴 문자열에 의한 RichTextBlock의로드가 느림
시각적 콘텐츠 만 렌더링하려면 어떻게해야합니까?
UWP
프로젝트에 RichTextBlock
이 있는데, 긴 문자열을 내용으로 설정하면 3 초 같은 콘텐츠가 표시되는 데 오래 걸립니다. 웹을 검색 한 결과 virtualization
이 없기 때문에 모든 콘텐츠를 렌더링하려고합니다. WPF 및 RichTextBox에 문제가있는 것 같습니다.긴 문자열에 의한 RichTextBlock의로드가 느림
시각적 콘텐츠 만 렌더링하려면 어떻게해야합니까?
나는 단락별로 내용을 분할하고 각각을 ListView에 separetly로 렌더링합니다.
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<RichTextBlock />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
긴 문자열을 작은 문자열 목록 List<string> strList
으로 변환하십시오. ScollViewer가 끝날 때마다 더 많은 텍스트가로드됩니다 (같은 단락에서).
<ScrollViewer Name="Scroll"
ViewChanged="Scroll_OnViewChanged">
<StackPanel>
<RichTextBlock>
<Paragraph x:Name ="P"></Paragraph>
</RichTextBlock>
</StackPanel>
</ScrollViewer>
.
private void Scroll_OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
var scroller = (ScrollViewer) sender;
if (scroller.ScrollableHeight-scroller.VerticalOffset > 5) return;
if (pointer >= strList.Count) return;
var run = new Run {Text = strList[pointer++]};
P.Inlines.Add(run);
}
pointer
유형 int
단지 개인 클래스 필드입니다.
검색 페이지가 있고 어쩌면 페이지 끝으로 가고 싶기 때문에이 페이지는 다시 느립니다. – Maryam
문자열은 얼마나 걸립니까? 나는 12000 개의 문자열로 테스트를했고, 즉시 버튼을 눌러 렌더링합니다. –
Visual Studio 프로파일 러를 사용하여 시간이 오래 걸리는 것을 확인하십시오. 3 초가 너무 깁니다 .. 디버그 대신 릴리스 모드에서 실행되도록 변경되었는지 확인하십시오. –