Windows XAML: LineCount в TextBlock?

У меня есть текстовый блок, который я пишу на холсте. Поскольку он находится на холсте, я вручную указываю x-координаты и y-координаты.

Моя проблема в том, что моя y-координата зависит от LineCount обтекания моего TextBlock (из-за ограниченной ширины).

Например, текст "ДОБАВИТЬ Бананы" записывается как:

ДОБАВИТЬ Бананы

который имеет 2 строки.

В зависимости от количества строк я что-то делаю.

Прямо сейчас я использую это, чтобы определить TextWidth и затем сделать вычисления оттуда. Тем не менее, все еще есть некоторые выбросы (например, вместо предполагаемых 3 строк, 2 в реальном визуале):

private double stringWidth(string s, double fontSize)
{
    if(s==" ")
        s = "\u00A0";  //this line wasn't required in silverlight but is now

    TextBlock t = new TextBlock()
    {
        FontSize = fontSize,
        Text = s
    };
    t.Measure(new Size(double.MaxValue, double.MaxValue));  //this line wasn't required in silverlight but is now
    return t.ActualWidth;
}

Есть ли лучший способ сделать это в Windows App Xaml?

0 ответов

Другие вопросы по тегам