我想在WPF中使用一个高效的日志查看器控件,它只是在添加消息时显示实时日志。连接来自日志系统的通知是没有问题的,但我担心一旦日志数量变大,日志窗口就会随着每个附加日志行进行爬行。
日志通知事件将仅提供一个日志字符串(以及一些元数据),我想要附加到TextBox中的行或带有滚动条的类似行。假设有足够的内存,追加大量的行不应该是内存问题,但我不希望系统在添加行号10,000后放慢速度。
我认为一旦字符串进入MB大小和数千行,将TextBox绑定到一个简单的字符串依赖属性就会变得相当慢。
如何在WPF中有效地编写这样的控件?
答案 0 :(得分:11)
为什么不使用列表框?创建一个集合,每次都添加日志消息,并将此集合绑定到itemscontrol itemssource。
编辑: 我在我的项目中使用数据网格来显示来自WCF服务的消息
EDIT2: 一些Itemsscontrols有以下property应该有所帮助:
<ListBox VirtualizingStackPanel.IsVirtualizing="True" />