如何在wpf列表框的一行上更改前景色?

如何在wpf列表框中更改前景文本颜色(不是所选文本或选择的背景)? 比方说,例如,我想把所有字母“a”项目设为绿色,所有字母“b”项目为红色等等? 我如何以编程方式执行此操作,因为我在c#中添加它们? 所有我能找到的是人们发布有关更改所选文本的内容,我想更改前景文本的颜色,使其看起来更有条理。

另外,为什么stackoverflow会给我这个问题带来问题? 说“不符合质量标准”的问题。 我认为这是一个完全合法的问题。 什么filter被置于这个问题上,使其不符合任何标准?

我希望这样做:

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); } 

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

          

转换器应将您的项目转换为具有所需颜色的Brush

 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添加到列表框(而不是字符串),这样您就可以在将前景色添加到列表框之前更改前景色。

以上述解决方案为基础:

 foreach (string pic in pics) { if (string.IsNullOrEmpty(pic)) continue; string first = pic.Substring(0, 1); Color color; switch (first.ToLower()) { case "a": color = Colors.Green; break; case "b": color = Colors.Red; break; default: color = Colors.Black; } ListBoxItem item = new ListBoxItem() { Content = pic, Foreground = new SolidColorBrush(color) }; lbxFileList.Items.Add(pic); }