我想要一个符合文字长度的文字区域。 我的XAML如下:
<Border Name="TextBorder" Margin="10, 0,10,280" >
<TextBlock x:Name="TextArea" TextWrapping="Wrap" Margin="4,0,4,0" TextAlignment="Left" VerticalAlignment="Center">Text to display</TextBlock>
</Border>
我计算字符数来表示行数:
var txt = TextArea.Text;
var nbOfLetters = txt.Length;
var letterSize = TextArea.FontSize;
var boxWidth = _initialDrawWidth - 2*_lateralSpace; // fixed size
var nbOfLines = (int)( (nbOfLetters * letterSize) / boxWidth + 0.99 ); // (int) + 0.99 --> round to upper value
var calculatedHeight = letterSize * nbOfLines;
然后我设置了保证金:
TextArea.Margin = new Thickness(_lateralSpace, _topSpace, _lateralSpace, (_initialDrawHeight - _topSpace - calculatedHeight));
但尺寸不合适。 即使行数不起作用,有时我会显示1行,但计算结果为2。
我做了一个测试,字体大小为11,一个长度为202的textarea,我有31个字符。但202/31 = 6.5不是11? 我不明白:每个值都以相同的单位表示,与设备无关的像素。
你知道我错在哪里以及如何解决它吗?