Pregunta

¿Es posible agregar colores dinámicos a un bloque de texto? Tengo un carácter en un color y el siguiente en otro color.

<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 desde el no. Lo he atado a este bloqueo de texto dentro de un cuadro de lista. ¿Es posible tener los personajes en diferentes colores?

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

Gracias. Se agradece cualquier ayuda.

¿Fue útil?

Solución

En realidad, puede, lo que puede ser útil cuando está haciendo un StringFormat en un bloqueo de textock de datos o en otros lugares.

Sin embargo, si desea probarlo, como aquí hay un ejemplo de SL para una etiqueta de formulario que coloca un asterisco rojo junto a los campos requeridos por el texto, pero también puede agregarle más cosas como se muestra en el ejemplo. Debería trabajar 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>

Otros consejos

los TextBlock no admite múltiples colores de primer plano.

Puede recrear este comportamiento utilizando múltiples bloques de texto (uno para cada letra) y colocándolos dentro de un WRAPPANEL. Luego podría cambiar el color de los caracteres/letras individuales como desee.
Tenga cuidado con el probable impacto de rendimiento que esto puede tener. Sin embargo, los márgenes alrededor de las letras individuales deberán ajustarse para recrear el comportamiento estándar. Tenga especialmente cuidado con la puntuación.

Estoy desarrollando para mango con el SDK WP7. Puedes usar unu003CRun> . Parece un poco erróneo en WP7, debe agregar espacios en la propiedad Run.Text para obtener el espacio correcto:

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

Para establecer el color de primer plano dinámicamente en un bloqueo de texto

use: txtblockname.foreground = new SolidColorBrush (Colors.yellow);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top