FormattedTextClass
не говорит вам, какова максимальная ширина линии. Это работает наоборот; Вы указываете ему максимальную ширину, и он выясняет, как отобразить текст.
Эта статья MSDN содержит больше информации: Рисунок отформатированного текста
Взяв пример кода и переопределив событие OnRender
окна, вот как выглядит строка текста, когда на ширину не накладывается никаких ограничений:

когда MaxTextWidth
установлено на 300:

и когда вызывается SetMaxTextWidths
, передавая двойной массив { 200, 500, 100 }
(последняя ширина используется для всех оставшихся строк, когда строк больше, чем элементов массива):

Во всех приведенных выше примерах я оставил для MaxTextHeight
значение 240.
Пара замечаний, если вы хотите запустить код из статьи в событии OnRender
для Window
:
- Установить окно
Background
собственность до Transparent
- Добавьте строку кода, чтобы нарисовать белый фон за текстом:
// Draw a white background
drawingContext.DrawRectangle(Brushes.White, null, new Rect(new Point(0, 0), new Size(this.Width, this.Height)));
// Draw the formatted text string to the DrawingContext of the control.
drawingContext.DrawText(formattedText, new Point(10, 10));