有什么方法可以检测文本块中的换行数TextWrapping="Wrap"
吗?
我正在考虑使用非等宽字体。我需要这个,因为我正在创建一个新的个性化 MessageBox 窗口,它有一个大文本标题、动画、我的应用程序的徽标和我的应用程序的主题。
很明显,我需要根据正文消息的 LineBreaks 的数量来更改窗口的大小——类似于默认 MessageBox 窗口的行为方式。
您可以看到没有换行的情况下获得了多少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属性。