适用于大型内容的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的算法。
当然,字符串构建器必须是您的类的成员,因此它存在于对象的生命周期中。