2013-08-27 16 views
2

我在控件中有多个TextBlocks。块具有固定的宽度,TextWrap属性设置为Wrap。文本通过绑定提供。Silverlight TextBlock应该只包含整个单词

现在,当SL检测到它不能适合该行中的另一个字符时,会发生包装。其结果如“The quick bro”\ r \ n“wn fox jumps”

但我希望这些块只能在文字中包含文字边界而不是在某个词中间的某个随机位置。预期结果应该看起来像“快速棕色”\ r \ n“狐狸跃”

这是TextBlocks之一的XAML:

<TextBlock 
    x:Name="Foo" 
    Foreground="#FFD4E4FF" 
    FontSize="14.667" 
    FontFamily="Arial" 
    Canvas.Left="586.671" 
    LineHeight="23.707" 
    TextWrapping="Wrap" 
    Text="{Binding Bar}" 
    Canvas.Top="170" 
    Width="120" /> 

任何想法?

+0

什么导致包装(什么改变了TextBlock的大小)?在SL4和SL5中,当TextBlock的宽度足以容纳一个单词时,我的'TextBlock'只是固定地包装单词,而不是字母。 – icebat

+0

@icebat承载“TextBlocks”的控件是非常复杂的。我从那里复制了很多东西到一个空白的解决方案,以找出造成这种奇怪包装行为的原因。但正如你所说:它不停地用文字包装。我猜想那里的一些控件组合真的会弄乱包装过程。 –

+0

我的猜测是,这种奇怪的包装可能是由高度受限造成的。如果具有给定高度和宽度的“TextBlock”只是不能将整个文本与文字换行相匹配,那么它就会被迫打破文字。 – icebat

回答

0

我们终于找到了问题。出于某种原因,我们从数据库加载的字符串包含的字符在调试器和文本编辑器中看起来像普通空白,但在Silverlight中没有这样处理。有问题的字符是non-breaking space

相关问题