2009-02-01 69 views
27

我想要一个在黄色背景上有蓝色文本的文本块。 我可以用“Foreground”属性设置蓝色文本。 但是“背景”不起作用(我想这可能太容易了)。如何在Silverlight中更改Textblock的背景颜色?

那么做到这一点的最好方法是什么,将其包装在具有背景色的矩形或画布中?

而且,有什么我们应该了解Silverlight,以了解为什么他们没有为您经常想要设置背景颜色的许多元素添加背景属性?

例如这使错误“属性背景是不是在类型文本块中发现”:

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

回答

43

TextBlock源自FrameworkElementTextBox源自Control,它源自FrameworkElement。 Background color property被置于Control中。

在WPF中,TextBlock有它自己的Background Property

在文本后面添加颜色的最佳方式是将文本放置在容器中,如边框或网格。喜欢的东西:

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

使用边界在这种情况下有用。 – 2012-02-09 12:38:36

+6

如果我需要textblock只需要所需的空间,那么背景只会被设置为内容大小呢? – 2013-02-11 14:21:11

6

这不是在Silverlight中出于某种原因,虽然它是在WPF。只需将一个边框包裹起来(它会自动调整为内容大小)。

5

只是如果有人创立这个线程谷歌搜索或沉湎于吸毒......

如果您需要背景使用该标签的控制它的工具包中的自第3版,我猜4版它已经包含在核心中。

参考Label Control in Silverlight

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