Code Bye

WPF 关于TextBlock换行问题


问题是:当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换行问题