【问题标题】:Changing TextBlock color from cs (windows phone 7)从cs更改TextBlock颜色(Windows Phone 7)
【发布时间】:2012-10-29 01:17:34
【问题描述】:

我是 Windows Phone 7 的全新开发人员。我在 MainPage.xaml 页面上有 TextBlock Text="{Binding MyDate}

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

【问题讨论】:

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

标签: silverlight windows-phone-7 textblock


【解决方案1】:

首先,您需要给TextBlock 元素一个x:Name 属性,例如x:Name="myTextBlock"。完成此操作后,TextBlock 将在代码隐藏中作为与您在 x:Name 中输入的名称相同的字段可用。

要设置 TextBlock 的前景色,可以使用类似

myTextBlock.Foreground = new SolidColorBrush(someColor);

【讨论】:

  • 我有这个:“错误 1 ​​当前上下文中不存在名称 'myTextBlock'”
  • @Karloss:由于您尚未提供所有 MainPage.xaml,我猜您可能没有为 TextBlock 提供 x:Name="myTextBlock" 属性,或者您的 TextBlock 位于DataTemplate.
  • 是的,我的 TextBlock 位于 DataTemplate 中。我怎样才能访问它?
  • @Karloss:请编辑您的问题以包括 (a) 您的完整 MainPage.xaml,以及 (b) 为什么要从代码隐藏设置 TextBlock 的颜色。你已经绑定到 TextBlock 的 Text,你能不能不使用 Foreground 的绑定?
  • 感谢您的意见。我在其他数据中绑定了颜色。
【解决方案2】:

试试这个:

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

【讨论】:

  • 我需要根据逻辑从cs文件中更改颜色(某些字段将具有红色,而其他字段将具有黑色)
  • 但逻辑很简单。然后通过cs文件为各个文本块更改网格的背景颜色,因为文本块没有背景属性,这就是我们放置网格的原因。
  • 设置Grid的name属性,然后设置backround。
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    进入xaml中的属性并添加

    Foreground="Red"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      相关资源
      最近更新 更多