【问题标题】:Set listItem text color in C# code在 C# 代码中设置 listItem 文本颜色
【发布时间】:2013-01-11 07:58:03
【问题描述】:

我有一个列表框,它显然通过数据绑定填充了列表项。您可能还知道,您可以使用 listItem 模板标签指定 listItem 的外观,如下所示:

<ListBox.ItemTemplate>
    <TextBlock Name="lblName" Text="{Binding Name}" Foreground="black" />
</ListBox.ItemTemplate>

请注意,listItems Textbloxk 上的前景是黑色的...

现在在我的 C# 代码中,我想动态地将每个 listItems Textblock Foreground 设置为我想要的任何颜色。如何引用特定的 listItems Textblock 并设置它的 Foreground?

如果需要更多信息,请询问!提前致谢!

【问题讨论】:

    标签: windows-phone-7 listbox windows-phone-7.1 foreground


    【解决方案1】:

    您真的需要在代码隐藏中执行此操作吗?

    首选的解决方案是将 Foreground 属性绑定到 ViewModel 的 ForegroundColor 属性(如果您使用 MVVM)。

    如果您不使用 MVVM 并且不想使用 Brush 属性“污染”您的模型类,您可以将 Foreground 属性绑定到您的类中已有的属性(例如 @987654324 @ 或 Age) 并使用 Converter 使其成为 Brush

    <ListBox.ItemTemplate>
        <TextBlock Name="lblName" Text="{Binding Name}" Foreground="{Binding Age, Converter={StaticResource AgeToColorConverter}}" />
    </ListBox.ItemTemplate>
    

    以及转换器的代码:

    public class AgeToColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            // Your code that converts the value to a Brush
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    【讨论】:

      【解决方案2】:

      更好和更简单的解决方案是为您的 SolidColorBrush 类型的项目添加一个属性,表示颜色,让我们调用 id ForegroundColor 并使用绑定

      <ListBox.ItemTemplate>
          <TextBlock Name="lblName" Text="{Binding Name}" Foreground="{Binding ForegroundColor}" />
      </ListBox.ItemTemplate>
      

      【讨论】:

      • 绝对同意这是最好的方法是的。如何为 SolidColorBrush 变量设置属性?例如,您向构造函数发送什么?一个字符串可能像这样: SolidColorBrush myBrush = new SolidColorBrush("#FFFFFF"); ?
      • 使用new SolidColorBrush(Colors.White),或者如果你想使用六进制,看看coding.kulman.sk/converting-hex-color-to-solidcolorbrush
      • 虽然这个答案是正确的,但我认为重要的是要注意在 Model 类上添加 Style 属性有时会被认为是一种不好的做法。
      猜你喜欢
      • 1970-01-01
      • 2010-11-02
      • 2016-03-14
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2021-12-27
      相关资源
      最近更新 更多