首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RichTextBlock文本行计数

RichTextBlock文本行计数
EN

Stack Overflow用户
提问于 2015-12-22 09:27:21
回答 1查看 473关注 0票数 0

我正在开发Windows 8.1应用程序,我得到了以下问题:

我有一个RichTextBlock控件,它保存我的文本,如果我的控件高度大于我的屏幕,我需要在用户读取文本时逐行滚动。

是否有任何方法来确定我的RichTextBlock中的行数,或者几何计算是唯一的方法?

我试图迭代块集合,但似乎没有什么相关的。

我附带的唯一方法是使用TextPointer.GetCharacterRect函数:

代码语言:javascript
复制
if(msgContainer.Blocks.Any())
{
    var item = msgContainer.Blocks.FirstOrDefault();

    var height = item.LineHeight;
    var startRect = item.ContentStart.GetCharacterRect(LogicalDirection.Forward);

    var lineHeight = startRect.Height;
    var lineCount = (int)_fatAssTextMessage.ActualHeight / lineHeight;
}

但这是不准确的

如有任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-22 10:09:50

如果你在做除法后做了演员表演,你会得到一个稍微准确的计数:

代码语言:javascript
复制
var lineCount = (int)(_fatAssTextMessage.ActualHeight / lineHeight);

目前,您正在将实际高度转换为整数,然后进行除法,这将始终低估行数。

这也会偶尔少算-当你有半行可见。为了确保始终获得尽可能大的价值,请执行以下操作:

代码语言:javascript
复制
var lineCount = (int)Math.Ceiling(_fatAssTextMessage.ActualHeight / lineHeight);

Math.Ceiling返回大于或等于指定的双精度浮点数的最小整数。

来源

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34412421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档