WPF 关于TextBlock换行问题 码拜 9年 ago 问题是:当TextBlock即将换行时遇到了标点符号,会导致其自动换行,但是目前来讲并不希望他在遇到标点符号时换行,有什么解决办法吗? 最终效果是:只有当这一行满时再换行 解决方案 100 引用: Quote: 引用: TextWrapping枚举有三个值,官方的说明是: Wrap:假如行溢出可用块宽度则进行换行,即使标准换行算法无法确定任何换行时机(例如说,被限制在不允许滚动的固定宽度容器中的非常长的单词的情况)。 WrapWithOverflow:假如行溢出了可用块宽度,则会进行换行。但是,假如换行算法无法确定换行时机(例如说,被限制在不允许滚动的固定宽度容器中的非常长的单词的情况),则行可能会溢出块宽度。 NoWrap:未执行换行。 说通俗点就是Wrap可能会导致提前换行,WrapWithOverflow可能会导致换行滞后。其原因就是标准换行算法无法确定换行时机,也就是换行算法的问题。你这种情况,建议你去掉字符串中空格和一些特殊字符,假如还不行换WrapWithOverflow试试。要是还解决不了就只能你本人写代码计算怎么样换行了。 本人现在用的是Wrap,首先肯定不能用NoWrap,本人刚才试了一下WrapWithOverflow,对于这个问题依旧没有帮助,是在考虑能否跟这个枚举关系不大呢? 能否有别的解决方案? 那你就本人重写一个显示字符串的控件。自定义一个UserControl,然后重写它的OnRender方法,在OnRender用drawingContext.DrawText在指定位置画字符串,本人计算字符串的长度,当到达边界的时候就插入一个换行符“”\r\n” CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明WPF 关于TextBlock换行问题!