Держите весь URL вместе в текстовом блоке с переносом слов - PullRequest
0 голосов
/ 08 октября 2019

У меня очень простой текстовый блок с фиксированной высотой и шириной, с некоторым содержанием, включая URL. Проблема в том, что если он встречает URL-адрес, который не может быть полностью размещен в оставшейся части строки, он разделяет URL-адрес с ": //", что выглядит очень некрасиво. Я просто хочу, чтобы он слипался, если он не может быть помещен в строку, тогда он должен переместить весь URL на следующую строку.

Пример кода и изображение прилагаются.

 <Grid>
   <TextBlock Width="200" Height="50" Background="Yellow" TextWrapping="WrapWithOverflow">
       <Run Text="This is supposed to test url http://google.com"></Run>
   </TextBlock>
</Grid>

enter image description here

Имейте в виду, что ни текст, ни URL-адрес не определены заранее, это значение переменной.

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Вы можете попробовать что-то вроде этого, это, вероятно, не полное решение, но может помочь вам сделать то, что вы хотите.

Попробуйте измерить ширину отформатированного текста, если ширина отформатированного текста больше ширины вашего текстового блока, то, безусловно, в игре есть перенос. Для этого вы можете использовать класс 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 есть форматирование, и если в нем нет форматирования, я бы лучше от него избавился.

0 голосов
/ 08 октября 2019

Попробуйте вместо этого:

Используйте тег разрыва в тексте, чтобы напечатать URL в новой строке без разрывов

...