1

我有一个在画布上写的文本块。因为它在画布上,所以我手动指定 x 坐标和 y 坐标。

我的问题是,我的 y 坐标取决于我的 TextBlock 上包装的 LineCount(由于宽度有限)。

例如,文本“ADD Bananas”写成:

添加香蕉

其中有 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 中有没有最好的方法来做到这一点?

4

0 回答 0