Вы можете попробовать что-то вроде этого, это, вероятно, не полное решение, но может помочь вам сделать то, что вы хотите.
Попробуйте измерить ширину отформатированного текста, если ширина отформатированного текста больше ширины вашего текстового блока, то, безусловно, в игре есть перенос. Для этого вы можете использовать класс FormattedText примерно так:
var formattedText = new FormattedText(
[Your Text from the TextBlock Here],
CultureInfo.CurrentCulture,
FlowDirection.LeftToRight,
new Typeface([YourTextBlock].FontFamily, [YourTextBlock].FontStyle, [YourTextBlock].FontWeight, [YourTextBlock].FontStretch),
[YourTextBlock].FontSize,
Brushes.Black);
Затем formattedText.Width даст вам ширину отображаемого текста. Сравните это с шириной объекта Text Block и, если форматированный текст больше, вы вставляете разрыв строки перед http: //, используя простой поиск по регулярному выражению.
Примечание: TextBlock не имеет текста напрямую,он имеет элемент Run, что означает, что он может быть дополнительно отформатирован, хотя опубликованный вами код этого не показывает. Это может стать немного сложнее, если в Run есть форматирование, и если в нем нет форматирования, я бы лучше от него избавился.