2013-03-14 33 views
15

Znalazłem example na MSDN, który pokazuje kilka sposobów, aby skonfigurować TextBlock:Dostęp kolor tła textblock

Wiele z nich wydaje się działać dla mnie, ale ta część nie:

textBlock.Background = Brushes.AntiqueWhite; 

Część "Background" jest podkreślona na czerwono, a Visual Studio mówi: "Windows.UI.Xaml.Controls.TextBlock nie zawiera definicji tła".

Jestem zakłopotany.

Czy to ostatnia zmiana? A może to zostało usunięte później?

+3

Twoje łącze MSDN nie jest dla wersji "TextBlock" dla środowiska wykonawczego Windows. Właściwy link znajduje się tutaj: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.textblock.aspx –

Odpowiedz

32

Jeśli dobrze pamiętam, WinRT opiera się na Silverlight, podczas gdy TextBlock wywodzi się z FrameworkElement i w przeciwieństwie do WPF, nie ma własnej właściwości Background.

Obejście polega na zapewnieniu tego samego efektu za pomocą dodatkowego elementu, który działa jak pojemnik i zapewnia tło za pomocą Border lub Grid z Background itp. Coś takiego;

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

A może Rectangle za TextBlock zapewnić to samo jeśli jest zawarta w powiedzmy Może Grid komórkowych lub lubi chyba, że ​​chcieliśmy, aby ustawić rozmiary na Rectangle bezpośrednio;

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

Niestety, uważam, że to jedyna aktualna alternatywa. Mam nadzieję że to pomoże.

+0

Co jeśli chcę ustawić "kolor tła" dla 5 ** TextBlock ** wśród 9 TextBlock ?? – Moumit

+0

@MoumitMondal Następnie sugerowałbym wykonanie 'ContentControl' przy użyciu tych samych pomysłów co powyżej, aby łatwiej było zastosować go w wielu miejscach :) –

+0

Dzięki @Chris W ... Właśnie zacząłem się uczyć' XAML' 2 dni temu. .. Więc "ContentControl" również nie jest dla mnie jasne ... ale dostanę to wkrótce ...: D – Moumit

-1

Możesz również użyć następującego kodu do dynamicznych zmian. (Tylko dla WPF)

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

Działa dobrze dla mnie w WPF-land. OP pytał o kontrolkę XAML 'TextBlock', ponieważ łącze MSDN przeszło do' TextBlock.FontSize'. Na wyższym poziomie znajduje się własność 'TextBlock': https://msdn.microsoft.com/en-us/library/system.windows.controls.textblock_properties(v=vs.110).aspx, która wyraźnie wymienia" Tło "jako własność. Osoby z dziedziny Silverlight/WinRT mogą tego nie robić. Sądzę, że to jest powód, dla którego padły. – vapcguy

2

Ustawia tło na biały. Ponadto wysokość i szerokość siatki jest powiązana z wartością TextBlock, więc nie musisz ręcznie ustawiać rozmiaru siatki.

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