从cs文件(Windows Phone 7)更改TextBlock的颜色

4

我是一个完全新手的Windows Phone 7开发者。在MainPage.xaml页面上,我有一个TextBlock Text="{Binding MyDate}

我该如何从MainPage.xaml.cs文件中更改这个TextBlock的颜色?


请编辑此问题以提供更多相关细节,例如TextBlock位于DataTemplate中的事实。展示一些代表性的XAML将有助于我们更好地帮助您。 - Visual Stuart
4个回答

6
首先,您需要给 TextBlock 元素添加一个 x:Name 属性,例如 x:Name="myTextBlock"。一旦这样做了,该 TextBlock 就可以作为代码后台中的一个与 x:Name 相同名称的字段可用。
要设置 TextBlock 的前景色,您可以使用类似以下内容的代码:
myTextBlock.Foreground = new SolidColorBrush(someColor);

我有这个:"错误1:当前上下文中不存在名称为'myTextBlock'的变量"。 - Karloss
@Karloss:由于您没有提供所有的MainPage.xaml文件,我猜测您可能没有给TextBlock添加“x:Name =”myTextBlock"属性,或者您的TextBlock位于DataTemplate中。 - Luke Woodward
是的,我的TextBlock位于DataTemplate中。我该如何访问它? - Karloss
@Karloss:请编辑你的问题,包括(a)完整的MainPage.xaml,以及(b)为什么你想要从CodeBehind设置TextBlock的颜色。你已经将TextBlock的Text绑定了,难道Foreground也不能使用绑定吗? - Luke Woodward
谢谢您的想法。我已经将颜色绑定到其他数据中了。 - Karloss

0
尝试这个:
<Grid  Background="Yellow" >  
    <TextBlock Foreground="Blue"
               Height="20"
               HorizontalAlignment="Stretch"
               Margin="0" 
               Text="this is a test"/> 
</Grid>

我需要根据逻辑从cs文件中更改颜色(某些字段将具有红色,其他字段将具有黑色)。 - Karloss
逻辑很简单。然后通过cs文件为相应的TextBlock更改Grid的背景颜色,因为TextBlock没有背景属性,这就是我们放置Grid的原因。 - aarti
设置 Grid 的名称属性,然后设置背景。 - aarti

0

由于您的TextBlock位于DataTemplate中,它将[可能]绑定到集合中的某个项。这意味着如果您将颜色绑定到属性,则需要在项类中而不是在主页中拥有该属性。如果您希望不同的项具有不同的颜色,则需要向项类添加属性。如果您已经有一个不正确类型(刷子)的属性,则可以在绑定上使用转换器以避免添加不必要的属性。

如果您不想将属性添加到项类中,则最好的选择是在页面资源中声明多个DataTemplate,然后根据需要交换模板:

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

0

进入XAML中的属性并添加

Foreground="Red"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接