【问题标题】:WPF: Best suited UI element to display a lot of text?WPF:最适合显示大量文本的 UI 元素?
【发布时间】:2014-04-28 09:29:01
【问题描述】:

我目前正在开发一个 C#/WPF 程序,在该程序中显示大量文本数据(重播文本日志)。这在一个计时器上运行,该计时器从文本文件中读取数据,然后将数据发送到将显示它们的用户控件。我遇到的问题是在我正在使用的 TextBlock 中显示覆盖所述秒的数据需要超过一秒的时间(由于数据量,大约 11k 行 pr 秒)。如果我跳过显示部分,计时器/程序运行得很好,没有任何延迟。

在更新速度方面显示这么多数据的最佳 UI 元素是什么?

【问题讨论】:

  • 它会停止还是这些日志文件会永久更新?
  • wo 每秒会读取 11k 行吗?
  • 除非用户是机器人,否则最好的 UI 元素可能是硬盘。
  • @Clemens 它会在计时器到达给定时间时停止。

标签: c# wpf text textblock


【解决方案1】:

对于大数据,如果您对结果进行分页,几乎总是会更好。

这是 google 对其搜索结果采取的方法。您获得了数百万,但只有一小部分出现在首页上。

Microsoft 为您提供了完成此任务的工具 - FlowDocument

您可以非常快速地获得具有专业外观的阅读器样式输出,例如 Kindle 屏幕。

【讨论】:

  • 这是否能够处理快速更新,还是会成为潜在的瓶颈?
  • @NorwegianSF 鉴于 大部分 文本可能不在屏幕上,因此更新应该不是问题。 文本渲染永远是你的瓶颈
  • 抱歉重播迟了,迟到总比没有好。我添加了 FlowDocuments,这大大减少了渲染时间。我还对文档包含的段落数量进行了限制,这很有帮助!非常感谢!
【解决方案2】:

试试 AvalonEdit,它非常擅长处理大数据,不像 TextBox/Block 在处理大数据时会导致 UI 无响应。 http://www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor

您确定用户需要全部数据吗?您也可以只显示日志的尾部(例如最后 100K 行)并提供下载整个文本的链接或某种分页机制。

【讨论】:

  • 谢谢,我会调查 AvalonEdit 看看是否有帮助。我可以删除前面的文本行,因此 GUI 只包含几秒钟/分钟的数据。
【解决方案3】:

您可以创建日志消息/字符串/行的集合,并将它们用作虚拟化面板的项目源,例如列表框默认使用它。只有那些实际在视野中的消息才会被渲染。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多