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

标签 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();
    }

一段时间后,它变得非常慢。
有没有推荐的方法来做这种事情?我是否使用了正确类型的控件?

谢谢!

最佳答案

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

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

关于wpf - 如何在 WPF 中有效地将文本流式传输到屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628071/

相关文章:

c# - 如何在运行时在 WPF 中创建 CefSharp ChromiumWebBrowser

c# - 在 C# 应用程序之间流式传输数据

wpf - 从 ViewModel 上的后台线程打开新窗口

c# - 当文本超出范围 WPF 时显示省略号 (...) 按钮

.net - WPF:在具有关闭按钮的子窗口镶边中包含控件

c# - 在*到达 View 模型之前拦截 UI 更改

c# - 为什么我当前添加的列表框项目不可访问?

c# - WPF 中的 Aero 窗口 (C#)

wpf - 绑定(bind)表达式错误的异常

c# - WPF 验证取决于必填/非必填字段