2010-11-15 130 views
2

我有一个FlowDocument为客户端生成一个文档,并且它得到了一个他们不喜欢的换行符。有什么办法可以标记一段文字,避免换行符?事情是这样的:WPF Flowdocument - 在%符号前防止换行

<Paragraph>Here is a paragraph where there should be <span NoLineBreak=True>no line break</span> in a certain part.</Paragraph> 

显然,跨度不具有NoLineBreak属性,但我不知道是否有一些equivilant功能可用,或者如果有人能让我开始实施SpanWithNoLineBreak类的方法或RunWithNoLineBreak类?

UPDATE 其实,一个我遇到的问题是一个百分号,其中竟然没有一个空间:

<Paragraph>When I print and &#x00BD;% I want the one-half and '%' symbols to not line break between them.</Paragraph> 

的&#x00BD;是&#xDBD的Unicode;符号。即使两者之间没有空间,我仍然会在1/2和%之间换行。

回答

2

Unicode字符“字乔伊纳“(U+2060)仅用于此目的。它“通常不会产生任何空间,但禁止在其任一侧上换行”(Wikipedia)。你把它放在U + 00BD和'%'之间,以防止它们之间的换行。

不幸的是,WPF(或者Windows提供的典型字体)不能正确支持它,而是将其渲染为方框。作为替代方案,您可以使用U + FEFF;这个字符作为零宽度非破坏空间的使用现在已被弃用(它保留用作字节顺序标记),但它对我来说是一个防线破解器。

最后,还有一些其他角色也可以用于此目的:U+202F(狭窄的不间断空间)也可以防止破坏,但也会渲染为非常薄的空间。 U+00A0(无中断空间)可防止破坏并显示为正常空间。

+0

看起来很有希望 - 明天我可以试试这个 – Clyde 2010-11-16 14:49:30

+0

完美! U + 2060实际上似乎为我工作,并在转换为PDF后幸存下来。 – Clyde 2010-11-17 13:16:52

0

尝试用non-breaking spaces替换空格。

编辑:那么总会有刚的TextBlocks把你的FlowDocument的与TextWrapping = NoWrap的备份计划,但我试图找到一个更好的办法...

+0

对不起,我试图简化问题的方法太多了。我已经更新了这个问题。我在文档的换行符中实际上没有空格。 – Clyde 2010-11-15 18:51:56