我想流式传输一堆文本以显示长时间运行任务的状态/进度(例如 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();
}
一段时间后,它变得非常慢。
有没有推荐的方法来做这种事情?我是否使用了正确类型的控件?
谢谢!
最佳答案
至少,您需要使用只读的 TextBox
并使用 AppendText()
方法追加文本。
当然,如果您有足够多的文本,您仍然无法避免性能问题。在这种情况下,您可能需要研究虚拟化(数据和 UI)解决方案。
关于wpf - 如何在 WPF 中有效地将文本流式传输到屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628071/