适用于大型内容的WPF Multiline TextBox

dec*_*jau 18 c# wpf textbox multiline

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

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

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

我想过使用一个标准的ListBoxVirtualizingStackPanel,但它不允许跨行文本选择.

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

有什么建议吗?

cod*_*nix 17

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

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

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

  • 请记住,文本框可能存储了每个后续操作以进行撤消操作.您可能想要更改文本框上的UndoLimit字段. (10认同)
  • 此解决方案存在性能问题.:(当使用数千行驱动控件时,TextBox占用了太多的UI资源(CPU).TextBox不是虚拟的,并且在每次AppentText()调用时进行复杂的计算.我认为我们需要一个控件,它可以重绘和布局以虚拟方式,如ItemsControl所做的那样. (2认同)

Dan*_*ose 6

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