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

Gui*_*rme 8 c# wpf xaml textblock word-wrap

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

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

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

Avi*_*hek 5

你可以看到txtName.ActualHeight没有包装你得到多少,然后将ActualHeight(包裹)除以你之前得到的值.你应该得到行数.

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

例如:(NoWrap)

txt.ActualHeight
311.0
Run Code Online (Sandbox Code Playgroud)

(包裹)

txt.ActualHeight
1420.4400000000019
Run Code Online (Sandbox Code Playgroud)

所以,

int lineCount = (txt.ActualHeight / 311.0)
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 :)

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

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

msgbox.Height = txt.ActualHeight + 10;
Run Code Online (Sandbox Code Playgroud)

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