最近在做一個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; }