2009-02-01 7 views
27

Je veux un bloc de texte qui a du texte bleu sur un fond jaune. Je peux définir le texte bleu avec l'attribut "Premier plan". Mais "Background" ne fonctionne pas (ce serait trop facile je suppose).Comment changer la couleur d'arrière-plan d'un Textblock dans Silverlight?

Alors, quelle est la meilleure façon de le faire, l'envelopper dans un rectangle ou un canevas qui a une couleur de fond? Et, y a-t-il quelque chose que nous devrions savoir à propos de Silverlight pour comprendre pourquoi ils n'ont pas inclus un attribut Background pour de nombreux éléments sur lesquels vous voudriez souvent définir la couleur d'arrière-plan?

par exemple. cela donne l'erreur « L'arrière-plan de la propriété n'a pas été trouvé dans le type Textblock »:

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

Répondre

43

TextBlock est dérivé de FrameworkElement. TextBox est dérivé de Control, qui est dérivé de FrameworkElement. Le Background color property est placé dans le contrôle.

Dans WPF, le TextBlock possède un Background Property. La meilleure façon d'ajouter une couleur derrière votre texte est de placer le texte à l'intérieur d'un conteneur comme une bordure ou une grille. Quelque chose comme:

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

Utiliser la frontière est utile dans ce cas. –

+6

et si j'ai besoin du bloc de texte pour prendre seulement l'espace nécessaire, de sorte que l'arrière-plan sera seulement réglé sur la taille du contenu? –

6

Ce n'est pas dans Silverlight pour une raison quelconque, bien qu'il soit en WPF. Juste envelopper une bordure autour de lui (il sera redimensionner au contenu automatiquement).

5

Juste si quelqu'un fonde ce fil googler ou fringales ...

Si vous avez besoin d'arrière-plan pour qui utilisent le contrôle de l'étiquette, il est dans la boîte à outils depuis la version 3, et je suppose que la version 4 c'est déjà inclus dans le noyau.

Référez Label Control in Silverlight

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

Quelques commentaires sur votre réponse. Juste le dumping du code n'est généralement pas la meilleure chose. Vous devriez essayer d'ajouter quelques explications sur ce que votre code fait (du texte et un lien vers la documentation officielle est également un pré). Une bonne réponse est la réponse acceptée sur cette question;). – Styxxy

+0

Je suis d'accord, vous avez besoin de commentaires, mais j'ai cherché comment faire cela et c'est la meilleure réponse – peterincumbria

Questions connexes