2011-11-13 86 views
4

我是Windows Phone 7的全新开发人员。我在MainPage.xaml页面上有TextBlock Text="{Binding MyDate}从cs(windows phone 7)更改TextBlock颜色

如何从MainPage.xaml.cs中更改此TextBlock的颜色?

+0

请编辑此问题以提供更多相关详细信息,例如TextBlock在DataTemplate中。显示一些有代表性的XAML将帮助我们更好地帮助您。 –

回答

6

首先,你需要给TextBlock元素的x:Name属性,例如x:Name="myTextBlock"。完成此操作后,TextBlock将在代码隐藏中作为与您在x:Name中放置的名称相同的字段提供。

要设置一个TextBlock的前景色,你可以使用像

myTextBlock.Foreground = new SolidColorBrush(someColor); 
+0

我有这个:“错误1 \t名称'myTextBlock'在当前上下文中不存在' – Karloss

+0

@Karloss:由于您没有提供所有的MainPage.xaml,我会猜测您要么没有' t给TextBlock一个'x:Name =“myTextBlock”'属性,或者你的TextBlock位于'DataTemplate'内。 –

+0

是的,我的TextBlock位于DataTemplate中。我如何访问它? – Karloss

0

试试这个:

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

我需要根据逻辑来改变cs文件的颜色(有些字段会有红色,其他的是黑色的) – Karloss

+0

然而逻辑很简单,然后通过cs文件改变各个文本块的背景颜色,因为textblock没有背景属性,这就是为什么我们把网格。 – aarti

+0

设置网格的名称属性,然后设置背景。 – aarti

0

随着你的TextBlock是一个DataTemplate,将[可能]被集合在结合的项目。这意味着,如果将颜色绑定到属性,则在项目类中将需要该属性,而不是在主页中。如果你想要不同的项目是不同的颜色,那么你将需要添加一个属性到项目类。如果你已经有一个属性不是正确的类型(Brush),那么你可以在绑定上使用转换器来避免添加不必要的属性。

如果你不想属性添加到您的项目类,那么最好的办法是在页面的资源声明多重的DataTemplates然后交换模板,因为你需要:

something.ItemTemplate = (DataTemplate)this.Resources["BlueItemTemplate"]; 
0

围棋在xaml中的属性并添加

相关问题