WPF中高效的实时日志查看器

WPF中高效的实时日志查看器,wpf,Wpf,我希望在WPF中有一个高效的日志查看器控件,它可以在添加消息时简单地显示一个实时日志。连接到日志系统的通知没有问题,但我担心一旦日志行的数量变大,日志窗口就会出现爬行,每个日志行都会附加日志行 日志通知事件将简单地提供一个日志字符串(以及一些元数据),我想通过滚动条将其附加到文本框或类似文本框中的行中。假设内存充足,添加大量行不应该是内存问题,但我不希望在添加行数10000后系统速度减慢 我假设,一旦字符串达到MB大小和数千行,将文本框绑定到简单的字符串依赖属性将变得相当缓慢 如何在WPF中高效

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

日志通知事件将简单地提供一个日志字符串(以及一些元数据),我想通过滚动条将其附加到文本框或类似文本框中的行中。假设内存充足,添加大量行不应该是内存问题,但我不希望在添加行数10000后系统速度减慢

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


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

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

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

编辑2: 一些ItemsControl具有以下功能,这些功能应该会有所帮助:

<ListBox VirtualizingStackPanel.IsVirtualizing="True" />


添加行号10000时,列表框是否有效更新?如果是这样的话,我想它应该会起作用。您正在更新集合,但不是直接更新ItemsControl:)在您的ui中,您只看到整个集合的一小部分。虚拟化是关键。见我的编辑2相关: