最近在做一个PDF电子文档相关的项目,我们的app是运行在Windows 8 / WinRT 下的。由于使用的第三方库的一些技术限制,text area竟然不支持多行文本自动换行。于是我们就需要自己实现自动换行,实现这个功能的关键点就是要知道如何去计算一个字符,一个单词在指定了字体跟字体大小的前提下占多宽。其实我们可以使用UIElement.Measure()来实现。具体的实现代码如下:
private static double MeasureString(string text,double fontSize = 7.0) { var textBlock = new TextBlock(); textBlock.Text = text; textBlock.FontSize = fontSize; textBlock.FontFamily = new Windows.UI.Xaml.Media.FontFamily("Microsoft YaHei"); textBlock.Measure(new Size(Double.MaxValue, Double.MaxValue)); return textBlock.ActualWidth; }