我的RichTextBlock
项目中有一个UWP
,当我设置长字符串作为内容时,显示3秒内容需要很长时间。我在网上搜索并发现因为它没有virtualization
,所以它想呈现所有内容。
似乎WPF和RichTextBox中存在问题。
您能否建议我应该如何渲染视觉内容?
答案 0 :(得分:1)
我会按段落拆分内容,并在 ListView 中逐个渲染每个内容。
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<RichTextBlock />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 1 :(得分:0)
将长字符串转换为较小字符串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
类型的私有类字段。