Узнать размеры текста до его отображения
Подскажите, пожалуйста, как узнать размер текста еще до его отображения?
У меня есть массив TextBlock с текстом. Мне нужно узнать длину максимального из их, и обернуть их в Border этого размера до отображения.
Ответы (1 шт):
Автор решения: Arthur Edgarov
→ Ссылка
Используйте FormattedText.
public Size GetTextPixelLength(string value, TextBlock textBlock)
{
var formattedText = new FormattedText(
value,
CultureInfo.CurrentCulture,
FlowDirection.LeftToRight,
new Typeface(textBlock.FontFamily,
textBlock.FontStyle,
textBlock.FontWeight,
textBlock.FontStretch),
textBlock.FontSize,
Brushes.Black,
new NumberSubstitution(),
VisualTreeHelper.GetDpi(textBlock).PixelsPerDip);
return new Size(formattedText.Width, formattedText.Height);
}