C# 使用换行器检测TextBlock中的换行数?

C# 使用换行器检测TextBlock中的换行数?,c#,wpf,xaml,textblock,word-wrap,C#,Wpf,Xaml,Textblock,Word Wrap,有没有办法用TextWrapping=“Wrap”检测textblock中的换行数 我正在考虑使用非等距字体。我需要这个,因为我正在创建一个新的个性化MessageBox窗口,它有一个大的文本标题、动画、应用程序的徽标和应用程序的主题 很明显,我需要根据正文消息的换行符数量更改窗口的大小-类似于默认MessageBox窗口的行为。您可以看到在没有换行的情况下得到的txtName.ActualHeight值,然后将实际高度(带换行)除以之前得到的值。你应该知道行数 注意:在构造函数中无法获得实际高

有没有办法用
TextWrapping=“Wrap”
检测textblock中的换行数

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


很明显,我需要根据正文消息的换行符数量更改窗口的大小-类似于默认MessageBox窗口的行为。

您可以看到在没有换行的情况下得到的
txtName.ActualHeight
值,然后将实际高度(带换行)除以之前得到的值。你应该知道行数

注意:在构造函数中无法获得实际高度。在表单中呈现textblock后,您将获得它

例如: (NoWrap)

(包裹)

所以

希望有帮助:)

根据您的问题更新:

如果需要根据文本块高度设置messagebox高度,只需执行以下操作:

msgbox.Height = txt.ActualHeight + 10;

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

Windows可以根据内容调整大小。查看属性。

我正在考虑检查文本块的高度,但我没有找到一个好方法。我认为这不是唯一的解决办法。对不起,我的英语不好。你可以看看这个。这是关于文本框的,但可能仍然对你有帮助。很明显,他想做的是:找出一个包装好的文本块中有多少行。什么不清楚?不清楚的是“他到底为什么需要那个”。也许还有另一种方法可以完成他想做的事情。如果你的问题是调整父窗口的大小,你不需要这样做。您可以将大多数控件中的大小设置为自动,并使其增长以适应其内容。是的,我会尝试这样做。我认为这是最好的方法,但是如果我需要更改字体大小,我需要再次测试并重新计算,我不希望出现这种情况。@Guillerme:检查我更新的答案,你可以避免重新计算。是的,这适用于窗口的大小,但在这种特定情况下,我需要一种“不太自动”的方法,因为一些动画和其他控件。无论如何,非常感谢你的帮助+1.
txt.ActualHeight
1420.4400000000019
int lineCount = (txt.ActualHeight / 311.0)
msgbox.Height = txt.ActualHeight + 10;