В моем приложении WPF у меня есть относительно небольшая коробка ограниченной ширины, в которой мне нужно отобразить некоторый текст, введенный пользователем.Реально можно ожидать, что текст будет содержать от одного до пяти слов, но слова могут легко быть больше, чем рамка.
Если текст слишком длинный, но содержит несколько слов, которые можно разбить на строки,Я бы хотел, чтобы текст был перенесен.Однако, если какое-либо отдельное слово слишком велико, чтобы его вместить, я хочу, чтобы размер текста уменьшался до тех пор, пока это слово не станет достаточно маленьким, чтобы соответствовать ему, независимо от того, переносится ли этот текст или нет.Мне все равно, сколько вертикального пространства занимает текст.
Вот пример, который я собрал вручную в Excel, чтобы продемонстрировать намеченное поведение:
В примере 1 весь текст помещается в поле.
В примере 2 текст состоит из двух слов, поэтому его можно переносить без сжатия текста.
В примере 3 одно слово слишком длинное, поэтому текст имеетбыть сокращенным.
В примере 4 текст может быть обернут, но он все еще содержит слово, которое слишком длинно, чтобы соответствовать, поэтому текст должен быть сжат, пока не подходит это самое длинное слово.
Как можноЯ делаю это в WPF?Мне не удалось найти комбинацию ViewBox
и TextBlock.TextWrapping
, которая делает это.
РЕДАКТИРОВАТЬ:
Если я сделать должнысделать это вручную (что было бы немного кошмаром), тогда есть ли хотя бы способ, чтобы я мог выяснить, что TextBlock решает, что это «линия»?Мне нужно знать, как он разбивает текст, прежде чем я смогу определить, будет ли какая-то одна «строка» слишком длинной.