如何在WPF中处理/编辑大量文本?

bit*_*onk 8 wpf performance text

使用WPF显示和编辑大量未格式化文本(就像notepade一样)的好方法是什么?将大字符串加载到TextBox会使UI无响应.整体性能与以前的Microsoft UI框架的TextBox Controls几乎没有可比性.

我有什么选择来解决这个问题.我不想在文本控件加载文本时阻止UI线程.此外,我可能需要某种"虚拟化",因为将整个文本加载到控件中可能不是一个好主意(我想即使它们不可见,20MB的文本也会创建很多字形).似乎TextBox甚至没有AppenText()方法,所以我甚至没有办法控制文本的异步加载.

这不是一个常见的问题吗?似乎WPF没有提供任何开箱即用的东西.为什么会这样?

Pat*_*lug 3

AvalonEdit 是 SharpDevelop 中的文本编辑器,完全是在 WPF 中从头开始编写的,并针对大量文本进行了优化。它不支持富文本(尽管它支持语法突出显示和其他很酷的功能,例如折叠)。我认为这可能非常适合您的要求。

这是开发者写的关于编辑器的文章:

http://www.codeproject.com/KB/edit/AvalonEdit.aspx

  • -1。我曾使用 AvalonEdit 处理 4MB 或更大的文件,但结果很糟糕。极其错误,并且像疯狂的轰炸机一样使我的应用程序崩溃。 (3认同)
  • 刚刚创建了一个新的 VS WPF C# 项目,添加 NuGet AvalonEdit.Sample 包,更改 StartupUri,运行瞧!,AvalonEdit 应用程序运行良好。打开一个 4MB、8k 行的文本文件只需不到一秒,而 TextBlock 则需要 22 秒。绝对可以替代 TextBlock。 (2认同)