2013-03-14 73 views
15

我發現這個example在MSDN上的背景色,顯示一些方法來配置一個文本塊:訪問文本塊

很多,似乎對我的工作,但是這部分失敗:

textBlock.Background = Brushes.AntiqueWhite; 

的「背景」部分以紅色突出顯示,Visual Studio說:「Windows.UI.Xaml.Controls.TextBlock不包含背景定義」。

我很困惑。

這是最近的變化嗎?或者之後會被刪除?

+3

您的MSDN鏈接不適用於Windows運行時版本的「TextBlock」。正確的鏈接在這裏:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.textblock.aspx – 2013-03-14 03:22:06

回答

32

如果我記得對WinRT是基於Silverlight的很多,而TextBlock派生自FrameworkElement和WPF不同,它不具有它自己的Background屬性。

解決方法是隻提供相同的效果與一個附加元素充當容器,並使用BorderGridBackground等提供您的背景。

<Border Background="AntiqueWhite"> 
    <TextBlock/> 
</Border> 

或者也許TextBlock後面Rectangle提供同樣的事情,如果它包含在說也許Grid細胞或其類似物,除非你想設置的Rectangle直接尺寸;

<Rectangle Fill="AntiqueWhite"/> 
<TextBlock/> 

不幸的是,我認爲這是您目前唯一的選擇。希望這可以幫助。

+0

如果我想設置'背景顏色' 5 TextBlock ** 9 TextBlock中? – Moumit 2013-11-25 09:33:59

+0

@MoumitMondal然後我會建議使用與上面相同的想法來創建一個'ContentControl',這樣你就可以更容易地將它應用到多個地方:) – 2013-11-25 14:19:21

+0

謝謝@Chris W ... 2天前我剛開始學習'XAML'。 ..所以'ContentControl'對我來說也不是很清楚......但我很快就會得到它......:D – Moumit 2013-11-26 05:33:18

-1

此外,您可以使用以下代碼進行動態更改。 (僅限WPF)

textBlock.Background = new SolidColorBrush(Colors.AntiqueWhite); 
+0

在WPF-land中適合我。 OP詢問XAML控件'TextBlock',因爲MSDN鏈接轉到了'TextBlock.FontSize'。從那裏開始有一層是'TextBlock'屬性:https://msdn.microsoft.com/en-us/library/system.windows.controls.textblock_properties(v=vs.110).aspx它清楚地列出了'背景'爲屬性。那些在Silverlight/WinRT領域可能沒有它。我想這就是降價的原因。 – vapcguy 2016-10-27 14:53:50

2

這將背景設置爲古色古香的白色。此外,網格的高度和寬度與TextBlock的高度和寬度綁定,因此您不必手動設置網格的大小。

 <Grid Background="AntiqueWhite" Height="{Binding ActualHeight , ElementName=textBlock1}" Width="{Binding ActualHeight , ElementName=textBlock1}"> 
     <TextBlock x:Name="textBlock1" Text="Text" /> 
     </Grid>