tags:

views:

4871

answers:

3

I want a textblock that has blue text on a yellow background. I can set the blue text with the "Foreground" attribute. But "Background" doesn't work (that would be too easy I guess).

So what is the best way to do this, wrap it in a Rectangle or Canvas that has a background color?

And, is there anything we should know about Silverlight to understand why they didn't include a Background attribute for many of the elements on which you would often want to set the background color?

e.g. this gives the error "The property Background was not found in type Textblock":

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

It's not in Silverlight for some reason, although it is in WPF. Just wrap a Border round it (it will resize to the content automatically).

Steven Robbins
+5  A: 

TextBlock is derived from FrameworkElement. TextBox is derived from Control, which is derived from FrameworkElement. The Background color property is placed in Control.

In WPF the TextBlock has a Background Property of it's own.

The best way to add a color behind your text is to place the text inside a container like a Border or a Grid. Something like:

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

Just if somebody founds this thread googling or binging...

If you need background for that use the label control it's in the toolkit since version 3, and I guess on version 4 it's already included in the core. http://www.c-sharpcorner.com/UploadFile/mahesh/SilverlightLabel12132008105302AM/SilverlightLabel.aspx

HTH Braulio

Braulio