2009-02-01 5 views
27

Ich möchte einen Textblock mit blauem Text auf gelbem Hintergrund. Ich kann den blauen Text mit dem Attribut "Vordergrund" festlegen. Aber "Hintergrund" funktioniert nicht (das wäre zu einfach, denke ich).Wie ändere ich die Hintergrundfarbe eines Textblocks in Silverlight?

Also was ist der beste Weg, dies zu tun, wickeln Sie es in ein Rechteck oder Canvas, das eine Hintergrundfarbe hat?

Und sollten wir etwas über Silverlight wissen, um zu verstehen, warum sie kein Hintergrund-Attribut für viele der Elemente enthalten, auf denen Sie häufig die Hintergrundfarbe einstellen möchten?

z.B. dies gibt die Fehlermeldung „Die Eigenschaft Hintergrund nicht in Typ Textblock gefunden wurde“:

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

Antwort

43

TextBlock ist von FrameworkElement abgeleitet. TextBox ist von Control abgeleitet, die von FrameworkElement abgeleitet ist. Die Background color property wird in Control platziert. In WPF hat die TextBlock eine eigene Background Property.

Der beste Weg, um eine Farbe hinter Ihrem Text hinzuzufügen, ist, den Text innerhalb eines Containers wie ein Rand oder ein Gitter zu setzen. Etwas wie:

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

Grenze Verwendung in diesem Fall sehr nützlich ist. –

+6

Was ist, wenn ich den Textblock brauche nur den benötigten Platz zu nehmen, so dass der Hintergrund nur auf die Inhaltsgröße gesetzt wird? –

6

Es ist nicht in Silverlight aus irgendeinem Grunde, obwohl es in WPF ist. Wickeln Sie einfach einen Rahmen darum herum (die Größe wird automatisch auf den Inhalt angepasst).

5

dir vor, wenn jemand diesen Thread gründet googeln oder binging ...

Wenn Sie Hintergrund für das die Kontrollmarkierung verwendet es seit Version 3 im Toolkit ist, und ich denke, auf Version 4 es ist bereits im Kern enthalten.

Siehe Label Control in Silverlight

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

Einige Rückmeldungen zu Ihrer Antwort. Dumping-Code ist in der Regel nicht das Beste. Sie sollten versuchen, eine Erklärung hinzuzufügen, was Ihr Code tut (ein Text und ein Link zu der offiziellen Dokumentation ist ebenfalls ein Vorwort). Eine gute Antwort ist die akzeptierte Antwort auf diese Frage;). – Styxxy

+0

Ich stimme zu, Sie brauchen ein Feedback, aber ich habe gesucht, wie dies zu tun ist und das ist die beste Antwort – peterincumbria