2011-12-03 102 views
6

是否可以向TextBlock添加动态颜色..i.e。一个颜色有一个字符,另一个颜色有下一个字符。TextBlock中的多种颜色

<TextBlock Text="{Binding no}" TextWrapping="Wrap" Margin="10,0,0,0" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="40" Foreground="#A400C4FF" > 
    // Can we add something here to specify what colours for what chars 
</TextBlock> 

基本上我输入一个动态的4字符序列从no。我已经将它绑定到ListBox中的这个TextBlock。是否有可能有不同颜色的字符。

如果是这样,可以动态添加这些颜色例如。如果我点击某个按钮某些字符会改变颜色?

谢谢。任何帮助表示赞赏。

回答

25

其实,你可以,可以派上用场,当你做一个的StringFormat在数据绑定的文本块或其他地方。

如果你确实想尝试一下,比如这里是一个表单标签的SL例子,它在文本Required Fields旁边放置一个红色星号,但也可以添加更多内容,如示例中所示。适用于Silverlight,WPF,UWP等...

<TextBlock> 
     <Run Text="*" Foreground="#FFE10101"/><Run Text="Required Line" /> 
     <Run Text="Red" Foreground="Red"/> 
     <Run Text="Blue" Foreground="Blue"/> 
     <Run Text="{Binding SomeString, StringFormat='Hell ya you can make \{0\} a different color!'}" Foreground="Orange"/> 
</TextBlock> 
0

TextBlock不支持多种前景色。

您可以通过使用多个文本块(每个字母一个)并将它们放置在一个wrappanel中来重新创建此行为。您可以根据需要更改单个字符/字母的颜色。
请注意这可能会对性能造成影响。个别字母周围的边距需要调整以重新创建标准行为。特别要小心标点符号。

+0

谢谢它的作品! – cjds

0

我正在为WPG SDK开发Mango。您可以使用<运行>。看来WP7上一个小马车,你必须增加对Run.Text物业的空间,以获得正确的间距:

<TextBlock>Hello<Run Foreground="Bisque" Text=" Holla "></Run>and hello again!</TextBlock>; 
+0

如何动态设置此Run标签中的文本? – iamatsundere181