AvalonEdit has much better performance and works with large input strings. Here is a minimal example:
MainWindow.xaml:
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestProject"
xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:MainWindow}">
<avalonedit:TextEditor Document="{Binding Document}" />
</Window>
MainWindow.xaml.cs:
using ICSharpCode.AvalonEdit.Document;
namespace TestProject
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Document.Text = "My string";
}
public TextDocument Document { get; } = new TextDocument();
}
}