2010-03-12 43 views
5

例如一个包装的TextBlock,如果1有一个文本块:可以seletively颜色在Silverlight/WPF

“Lorem存有胡萝卜,增强回扣,但他们occaecat时间和活力,如劳动力和肥胖DUIS的某种多年来,我会来的,谁将会nostrud锻炼,学区劳动,但要aliquip前EA commodo consequat。然而,cupidatat阵痛临到在欲望的快感批评是一个cillum等dolore麦格纳逃离不产生任何结果。Excepteur他们是黑人cupidatat不excepteur,必须遵守的过失魁正式开通了那就是放弃的软头脑会发生改变。“

1希望这个文本块的前10%,使得字体颜色应该是红色的,其余的应该是绿色的。

这或许意味着它会上色“Lorem存有胡萝卜,西红柿adipisici”的“N”的一部分。基本上,逐像素的字体颜色,而不是字符,明智的。

另一个重要的行为是个尊重的包装,并且如果的文本块内容50%是彩色的,它应该是指文本的50%,阅读顺序是彩色的,而不是块的前半部分。

例如,这是一个类似的问题(与正确答案),但对于标签/文本块时没有包装, Is it possible to seletively color a label in Silverlight?

回答

3

1不相信这是可能的逐像素(至少在没有测量使用的来自链接的问题的技术之一在一行接一行的基础上的文本)。它可以用一个字符明智的运行对象

<TextBlock FontSize="24" TextWrapping="Wrap"> 
    <Run Foreground="Red">Lorem ipsum dolor sit amet, consectetur</Run> 
    adipisicing elit, sed do eiusmod tempor incididunt ut labore et 
    dolore magna aliqua. Ut enim ad minim veniam... 
</TextBlock> 

如果文字是动态的,你需要编写代码的文本到两分分区(并将它们分配到集合TextBlock.Inlines完成),但它不应该太硬来封装成一个自定义的控制。您可以使用

4

运行,给您的文字分开。在这个意义上,可以修改每次运行的背景下,这样的...

<TextBlock> 
     <Run Background="Red"> 
      Republican 
     </Run> 
     <Run Background="Blue"> 
      Democrat 
     </Run> 
    </TextBlock> 
2

据我所知,没有支持没有内置这种情况。在WPF,1指望你不得不编写自己的TextFormatter。在Silverlight中,你可能需要做一些可怕的喜欢渲染到内存中的位图和图像处理用找到改变像素,然后在屏幕上绘制位图。 Eugh。

相关问题