适用于大型内容的WPF Multiline TextBox

在WPF应用程序中,我想构建一个“在文件中查找”输出窗格,在该窗格中我可以流式传输大量文本,而无需在每行重新分配内存,就像TextBox那样。

WPF TextBox有一个Text属性,用于存储连续的字符串。 每次,我想添加内容,我需要做textBox.Text += "New Text" ,这很糟糕。

理想情况下,该控制是虚拟的,只需要最少的资源,仅用于可见线。

我考虑过使用带有VirtualizingStackPanel的标准ListBox ,但它不允许跨行进行文本选择。

(在添加的每个新行中,我希望控件更新)

有什么建议吗?

如果您的应用程序中预计搜索结果不会超过一万个,那么TextBlock控件或只读多行TextBox就足够了。

TextBox类有一个AppendText()方法,它应该足够快。

如果您需要文本突出显示/格式化,那么您可能想要使用RichTextBox。

如果你有非常大的内容,那么不幸的是所有的WPF文本框和类似的控件都很慢。 看到这个问题 。 您可以使用AvalonEdit作为替代品。

您是否考虑过或尝试过RichTextBox控件?

StringBuilder,只是将文本附加到“字符串”构建器而不是执行

 textBox.Text += moreText; 

 myStringBuilder.Append(moreText); textBox.Text = myStringBuilder.ToString(); 

这应该照顾Schlemiel the Painter的算法。

当然,字符串构建器必须是您的类的成员,因此它存在于对象的生命周期中。