Multiple Colors In TextBlock

后端 未结 4 1397
名媛妹妹
名媛妹妹 2020-12-16 21:23

Is it possible to add dynamic colors to a TextBlock ..i.e. have one character in one color and the next in another color.



        
相关标签:
4条回答
  • 2020-12-16 21:58

    Actually, you can, which can come in handy when you're doing a StringFormat on a data bound Textblock or a number of other places.

    If you did want to try it though, like here's an SL example for a form label that puts a red asterisk next to the text Required Fields, but then can also add more stuff to it as shown in the example. Should work for Silverlight, WPF, UWP, etc...

    <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 讨论(0)
  • 2020-12-16 22:05

    I'm developing for Mango with the WP7 SDK. You can use a <Run>. It seems a little buggy on WP7 , you have to add a spaces on the Run.Text property to get the spacing correct:

    <TextBlock>Hello<Run Foreground="Bisque" Text=" Holla "></Run>and hello again!</TextBlock>;
    
    0 讨论(0)
  • 2020-12-16 22:08

    to set foreground color dynamically to a textblock

    use: txtblockname.Foreground= new SolidColorBrush(Colors.Yellow);

    0 讨论(0)
  • 2020-12-16 22:19

    The TextBlock does not support multiple Foreground colors.

    You could recreate this behaviour by using multiple textblocks (one for each letter) and placing them within a wrappanel. You could then change the color of individual characters/letters as you wish.
    Beware of the probable performance impact this may have. The margins around individual letters will need to be adjusted to recreate standard behaviour though. Be especially careful around punctuation.

    0 讨论(0)
提交回复
热议问题