Спасибо, Дэвид. В настоящее время я смотрю на 2 возможных решения, ваше и следующее:
Я создал пользовательский элемент управления, который основан на стандартном TextBox, но в этом поместье фактически расположены 2 текстовых поля:
<TextBox Name="tbxBack"
Foreground="Transparent"
SpellCheck.IsEnabled="True"
TextWrapping="Wrap"
SnapsToDevicePixels="True"/>
<TextBox Name="tbxFront"
Background="Transparent"
TextWrapping="Wrap"
SnapsToDevicePixels="True"
IsReadOnly="True"/>
Я думаю, что здесь довольно просто, но я обеспокоен потенциальными накладными расходами, которые это вызовет.
Причина, по которой я смотрю на двойное решение TextBox, заключается в том, что я беспокоюсь, если я попытаюсь отменить событие, оно может закончиться каким-то миганием в элементе управления при изменении текста.