C# WPF Корректный перенос текста

Хочу повторить функцию MonkeyType с вводом текста, для этого создал textblock(тут будет отображаться текст который нужно ввести), textbox(сюда будут вводиться символы) и textblock(тут будут отображаться вводимые символы, это нужно для изменения цвета символа при проверке). Проблема в том что при вводе в textbox части слова оно не переносится(и я в целом понимаю почему) из-за чего ввод становится не совсем корректно выглядеть пока не ввести все слово, а мне бы хотелось исправить это. Ниже код и скрины.

Вот тут первый textblock с текстом, а ниже textbox и textblock для отображения вводимого текста.(на счет стилей и того что даже с ними половина параметров написана вручную знаю, просто пока создаю концепт кода, отполирую позже)

    <TextBlock Text="{Binding DisplayText}"
               HorizontalAlignment="Left"
               VerticalAlignment="Top"
               TextWrapping="Wrap"
               FontSize="32"
               Style="{StaticResource defaultstyle}"/>
    <TextBox 
             Style="{StaticResource inputtext}"
             Text="{Binding InputText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    <TextBlock Text="{Binding InputText}"
               FontSize="32"
               IsHitTestVisible="False"
               VerticalAlignment="Top"
               HorizontalAlignment="Left"
               Foreground="White"
               TextWrapping="Wrap"
               Style="{StaticResource defaultstyle}"/>

Вот скрин проблемы о которой я говорю, кусок слова остается сверху из-за чего ввод выглядит не правильно, если ввести полностью оно перенесется. введите сюда описание изображения

В итоге я пришел к тому что мне либо нужно убирать второй textblock и менять цвет текста из первого textblock, но как честно говоря я так и не придумал(были мысли через textrange или как-то так оно называлось, но я пока не пробовал, хотя это в целом лучший вариант на данный момент).

Еще вариант при каждом вводе вызывать функцию для проверки если следующее слово больше среднего кол-ва символов в строке, то переносить текст пользователя путем добавления \n(да, костыль, но этот вариант я хоть как-то еще могу представить себе), но и тут проблема с тем что я не могу придумать как мне узнать следующее слово ведь для этого либо нужно вести счет вводимых слов а это также тяжело для меня придумать, ведь если делать счет через пробелы, то человек может просто ввести 5 пробелов, а если делать путем счета длины строки и длины частей массива строк, то это как по мне не лучший вариант ведь там сначала нужно узнать по кол-ву символов сколько минимум слов человек уже написал и только после этого брать следующее слово.

На этом идеи кончились, поэтому хотел узнать тут какие есть варианты либо решения моей проблемы либо может кто-то подскажет просто лучший вариант для реализации этого? На счет RichTextBox я пытался его использовать, но программа зависает на некоторое время при просто быстрее обычного ввода текста, из-за чего я не использовал его.


Ответы (0 шт):