我有一个在画布上写的文本块。因为它在画布上,所以我手动指定 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 中有没有最好的方法来做到这一点?