Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the background color of a Textblock in Silverlight?

Tags:

silverlight

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"/>
like image 523
Edward Tanguay Avatar asked Feb 01 '09 13:02

Edward Tanguay


3 Answers

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>
like image 68
Sorskoot Avatar answered Oct 20 '22 16:10

Sorskoot


For me worked next:

<Border Background="GreenYellow">
    <TextBlock Text="sdfs" Height="60" Width="200"  />
</Border>
like image 27
igor_bugaenko Avatar answered Oct 20 '22 18:10

igor_bugaenko


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).

like image 6
Steven Robbins Avatar answered Oct 20 '22 16:10

Steven Robbins