C# 在wpf列表框的一行上,前景色是如何改变的?

C# 在wpf列表框的一行上,前景色是如何改变的?,c#,wpf,listboxitem,C#,Wpf,Listboxitem,如何在wpf列表框中更改前景文本颜色(而不是所选文本或所选内容的背景)?比如说,我想让所有字母“a”项目都变成绿色,所有字母“b”项目变成红色,等等?当我在c#中添加它们时,如何通过编程实现这一点?我所能找到的就是人们发布关于更改所选文本的帖子,我想更改前景文本的颜色,使其看起来更有条理 另一方面,为什么stackoverflow在这个问题上给了我问题?问题是“不符合质量标准”。我认为这是一个完全合理的问题。在这个问题上设置了什么过滤器使其不符合任何标准 我希望这样做: string[] pic

如何在wpf列表框中更改前景文本颜色(而不是所选文本或所选内容的背景)?比如说,我想让所有字母“a”项目都变成绿色,所有字母“b”项目变成红色,等等?当我在c#中添加它们时,如何通过编程实现这一点?我所能找到的就是人们发布关于更改所选文本的帖子,我想更改前景文本的颜色,使其看起来更有条理

另一方面,为什么stackoverflow在这个问题上给了我问题?问题是“不符合质量标准”。我认为这是一个完全合理的问题。在这个问题上设置了什么过滤器使其不符合任何标准

我希望这样做:

string[] pics= Directory.GetFiles(@"C:\\", "*.jpg");
        foreach (string pic in pics)
        {
            CHANGE THE FOREGROUND COLOR TO RED
            lbxFileList.Items.Add(pic);
        }
string[] vids= Directory.GetFiles(@"C:\\", "*.mpg");
        foreach (string vid in vids)
        {
            CHANGE THE FOREGROUND COLOR TO GREEN
            lbxFileList.Items.Add(vid);
       }

将模板与转换器结合使用:


转换器应将项目转换为具有所需颜色的
画笔

class FileNameToColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
        CultureInfo culture)
    {

        return value.EndsWith("mpg") ? Brushes.Green : Brushes.Red;
    }

    public object ConvertBack(object value, Type targetType, object parameter,
        CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

我同意前面的答案,但您也可以将listboxitems添加到您的listbox(而不是字符串),这样您就可以在将其添加到listbox之前更改前景色。

要基于上述解决方案:

foreach(图片中的字符串pic)
{
if(string.IsNullOrEmpty(pic))
继续;
第一个字符串=pic.子字符串(0,1);
颜色;
开关(first.ToLower())
{
案例“a”:
颜色=颜色。绿色;
打破
案例“b”:
颜色=颜色。红色;
打破
违约:
颜色=颜色。黑色;
}
ListBoxItem项目=新建ListBoxItem(){
内容=图片,
前景=新的SolidColorBrush(颜色)
};
lbxFileList.Items.Add(pic);
}

您希望前景色的规则是什么?正如您所看到的,我没有使用绑定源代码,而是在c#中添加字符串。您知道如何在c#中更改颜色吗?您应该仍然能够使用DataTemplate来控制项目的外观。实际上,它们是通过绑定还是通过代码添加并不重要。你说的c#中的示例是什么意思?模板?