文本长度不适合FontSize

时间:2018-06-03 13:15:34

标签: c# wpf

我想要一个符合文字长度的文字区域。 我的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? 我不明白:每个值都以相同的单位表示,与设备无关的像素。

你知道我错在哪里以及如何解决它吗?

0 个答案:

没有答案