2011-12-03 15 views
6

Es posible agregar colores dinámicos a un TextBlock ..i.e. tener un personaje en un color y el siguiente en otro color.Múltiples colores en 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> 

Básicamente, ingreso una secuencia dinámica de 4 caracteres de la No. Lo he vinculado a este TextBlock dentro de un ListBox. ¿Es posible tener los personajes en diferentes colores?

Si es así, puede agregar estos colores dinámicamente para, p. Ej. Si hago clic en un botón, ¿ciertos caracteres cambian de color?

Gracias. Cualquier ayuda es apreciada.

Respuesta

25

En realidad, se puede, que puede ser útil cuando estás haciendo un StringFormat en un Textblock enlazado a datos o en otros lugares.

Si desea probarlo, como este es un ejemplo de SL para una etiqueta de formulario que pone un asterisco rojo junto al texto Campos obligatorios, pero también puede agregarle más cosas, como se muestra en el ejemplo. Debe funcionar para 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

El TextBlock no es compatible con varios colores de primer plano.

Puede volver a crear este comportamiento utilizando varios bloques de texto (uno para cada letra) y colocándolos dentro de un wrappanel. A continuación, puede cambiar el color de los caracteres/letras individuales que desee.
Tenga cuidado con el posible impacto en el rendimiento que pueda tener. Sin embargo, los márgenes alrededor de las letras individuales deberán ajustarse para recrear el comportamiento estándar. Tenga especial cuidado con la puntuación.

+0

Thanks It Works !! – cjds

0

Estoy desarrollando para Mango con el WP7 SDK. Puede usar un <Ejecutar>. Parece un pequeño carrito de WP7, hay que añadir unos espacios en la propiedad Run.Text para obtener el espacio correcto:

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

¿Cómo puedo configurar el texto en esta etiqueta Ejecutar dinámicamente? – iamatsundere181