使用wrap检测TextBlock中的换行符数量?

时间:2013-04-11 13:34:30

标签: c# wpf xaml textblock textwrapping

有没有办法用TextWrapping="Wrap"检测文本块中的换行符数?

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

很明显,我需要根据正文消息的LineBreaks数量来改变窗口的大小 - 类似于默认MessageBox窗口的行为方式。

2 个答案:

答案 0 :(得分:5)

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

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

例如: (NoWrap的)

txt.ActualHeight
311.0

(套)

txt.ActualHeight
1420.4400000000019

所以,

int lineCount = (txt.ActualHeight / 311.0)

希望有所帮助:)

根据您的问题更新进行更新:

如果您需要根据文本块高度设置消息框高度,则可以执行以下操作:

msgbox.Height = txt.ActualHeight + 10;

//我添加了10只是为了增加一点余量。

答案 1 :(得分:1)

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