Wpf 通过长字符串在RichTextBlock上缓慢加载

Wpf 通过长字符串在RichTextBlock上缓慢加载,wpf,uwp,richtextbox,windows-10-universal,Wpf,Uwp,Richtextbox,Windows 10 Universal,我在我的UWP项目中有一个RichTextBlock,当我将长字符串设置为内容时,显示内容需要很长时间,比如3秒钟。我搜索了web并发现,因为它没有虚拟化,它希望呈现所有内容。 WPF和RichTextBox中似乎存在问题 你能建议我怎么做才能只渲染视觉内容吗?我会将内容按段落分割,然后在ListView中分别渲染 将长字符串转换为小字符串列表列表strList。每当ScollViewer到达末尾时,将加载更多文本(在同一段落中) 指针只是一个类型为int的私有类字段我有一个很长的段落multi

我在我的
UWP
项目中有一个
RichTextBlock
,当我将长字符串设置为内容时,显示内容需要很长时间,比如3秒钟。我搜索了web并发现,因为它没有
虚拟化
,它希望呈现所有内容。 WPF和RichTextBox中似乎存在问题


你能建议我怎么做才能只渲染视觉内容吗?

我会将内容按段落分割,然后在ListView中分别渲染


将长字符串转换为小字符串列表
列表strList
。每当ScollViewer到达末尾时,将加载更多文本(在同一段落中)


指针
只是一个类型为
int
的私有类字段

我有一个很长的段落multiple@Maryam也许你不应该有一个很长的段落。我正在测试,我添加了36000多个字符,但它仍然立即呈现..在42000个字符的字符串中,它给出了异常。。因此,还有其他一些因素在减缓这一进程code@HassaanAkbar,也许你的RTB的高度是静态的,它没有你的内容那么大,你明白我的意思吗?若您将RTB的高度设置为您的内容,它将slow@HassaanAkbar,我有60000个字符你的线有多长?我用12000个字符串进行了测试,按一个按钮它就会立即呈现。使用visual studio profiler检查花费了这么多时间的内容。。3秒太长了。。还要检查在发布模式而不是调试模式下运行是否有任何区别。因为我有搜索页面,可能我想转到页面的末尾,所以这再次很慢。
<ListView>
    <ListView.ItemTemplate>
        <DataTemplate>
            <RichTextBlock />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
    <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);
            }