2009-02-01 15 views
27

Quiero un bloque de texto que tenga texto azul sobre fondo amarillo. Puedo establecer el texto azul con el atributo "Primer plano". Pero "Background" no funciona (eso sería demasiado fácil, supongo).¿Cómo cambiar el color de fondo de un bloque de texto en Silverlight?

Entonces, ¿cuál es la mejor manera de hacer esto, envuélvala en un rectángulo o lienzo que tenga un color de fondo?

Y, ¿hay algo que debemos saber sobre Silverlight para comprender por qué no incluyeron un atributo de Fondo para muchos de los elementos en los que a menudo querría establecer el color de fondo?

p. Ej. esto da el error "El fondo de la propiedad no se encontró en el tipo Textblock":

<TextBlock 
    Foreground="Blue" 
    Background="Yellow" 
     Height="20" 
    HorizontalAlignment="Stretch" 
    Margin="0" 
    Test="this is a test"/> 

Respuesta

43

TextBlock se deriva de FrameworkElement. TextBox se deriva de Control, que se deriva de FrameworkElement. El Background color property se coloca en Control.

En WPF, el TextBlock tiene un Background Property propio.

La mejor manera de agregar un color detrás de su texto es colocar el texto dentro de un contenedor como un borde o una cuadrícula. Algo así como:

<Grid Background="Yellow" > 
    <TextBlock Foreground="Blue" 
       Height="20" 
       HorizontalAlignment="Stretch" 
       Margin="0" 
       Text="this is a test"/> 
</Grid> 
+1

Usando frontera es útil en este caso. –

+6

¿Qué ocurre si necesito que el bloque de texto ocupe solo el espacio necesario para que el fondo solo se configure con el tamaño del contenido? –

6

No está en Silverlight, por alguna razón, aunque es en WPF. Simplemente envuelve un borde alrededor (cambiará el tamaño del contenido automáticamente).

5

Sólo si alguien funda este hilo buscando en Google o los atracones ...

Si necesita de fondo para que el uso del control de etiqueta que está en la caja de herramientas desde la versión 3, y supongo que en la versión 4 ya está incluido en el núcleo.

Consulte Label Control in Silverlight

9
<Border Background="GreenYellow"> 
    <TextBlock Text="sdfs" Height="60" Width="200" /> 
</Border> 
+0

Algunos comentarios sobre su respuesta. Solo el código de dumping generalmente no es lo mejor. Debería intentar agregar alguna explicación sobre lo que hace su código (algunos textos y un enlace a la documentación oficial también son un pre). Una buena respuesta es la respuesta aceptada en esta pregunta;). – Styxxy

+0

Acepto, necesita algunos comentarios, sin embargo, he estado buscando cómo hacerlo y esta es la mejor respuesta. – peterincumbria

Cuestiones relacionadas