使用换行检测TextBlock中的换行次数

本文关键字:换行 TextBlock 检测 | 更新日期: 2023-09-27 18:08:44

是否有任何方法可以检测TextWrapping="Wrap"文本块中的断行数?

我正在考虑使用非等宽字体。我需要这个,因为我要创建一个新的个性化的MessageBox窗口,它有一个大的文本标题,动画,我的应用程序的徽标和我的应用程序的主题。

很明显,我需要根据正文消息的换行次数来改变窗口的大小——类似于默认的MessageBox窗口的行为。

使用换行检测TextBlock中的换行次数

您可以看到没有换行的情况下获得多少txtName.ActualHeight,然后将ActualHeight(带换行)除以之前获得的值。你应该得到行数

注意:你不会在构造函数中得到实际的高度。当文本块在表单中呈现后,您将获得它。

如:(NoWrap)}

txt.ActualHeight
311.0

(包装)

txt.ActualHeight
1420.4400000000019

int lineCount = (txt.ActualHeight / 311.0)

希望能有所帮助:)

根据您的问题更新:

如果你需要根据你的文本块高度设置消息框的高度,你可以简单地这样做:

msgbox.Height = txt.ActualHeight + 10;

//我加了10只是为了增加一点边距

Windows可以根据内容调整其大小。参考SizeToContent属性