【问题标题】:Efficient live log-viewer in WPFWPF 中的高效实时日志查看器
【发布时间】:2011-05-13 08:09:45
【问题描述】:

我希望 WPF 中有一个高效的日志查看器控件,它可以在添加消息时简单地显示实时日志。连接到来自日志系统的通知是没有问题的,但是我担心一旦日志行的数量变大,日志窗口会随着每​​个附加的日志行而爬行。

日志通知事件将简单地提供一个日志字符串(以及一些元数据),我想将其附加到 TextBox 中的行或类似的带有滚动条的行中。假设有足够的内存,添加大量行应该不是内存问题,但我不希望系统在添加第 10,000 行后变慢。

我假设一旦字符串达到 MB 大小和数千行,将 TextBox 绑定到简单的字符串依赖属性会变得相当慢。

如何在 WPF 中高效地编写这样的控件?

【问题讨论】:

标签: wpf


【解决方案1】:

为什么不使用列表框?创建一个集合,您每次都在其中添加日志消息,然后将此集合绑定到您的 itemscontrol itemssource。

编辑: 我在我的项目中使用数据网格来显示来自 WCF 服务的消息

编辑2: 一些 Itemsscontrols 具有以下 property 应该会有所帮助:

<ListBox VirtualizingStackPanel.IsVirtualizing="True" />

【讨论】:

  • 添加第10000行时列表框是否有效更新?如果是这样,我想它应该可以工作。
  • 好吧,您正在更新您的收藏,但不是直接更新 itemsscontrol :) 在您的 ui 中,您只会看到整个收藏的一小部分。虚拟化是关键。看我的 EDIT2
猜你喜欢
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
相关资源
最近更新 更多