如何在WPF中有效地将文本流式传输到屏幕?

时间:2011-01-07 16:57:43

标签: wpf

我想流式传输一堆文本以显示长时间运行任务的状态/进度(例如Visual Studio中的输出窗口)。

目前我有类似这样的XAML:

    <ScrollViewer Canvas.Left="12" Canvas.Top="12" Height="129" Name="scrollViewer1" Width="678">
        <TextBlock Name="text"  TextWrapping="Wrap"></TextBlock>
    </ScrollViewer>

这个代码背后:

    private void Update(string content)
    {
        text.Text += content + "\n";
        scrollViewer1.ScrollToBottom();
    }

过了一会儿,它变得非常慢 有没有推荐的做这种事情的方法?我使用的是正确的控件吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

至少,您需要使用只读TextBox并使用AppendText()方法附加文字。

当然,如果您有足够的文本量,您仍然无法免受性能问题的影响。在这种情况下,您可能需要研究虚拟化(包括数据和UI)解决方案。