作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 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);
}
最佳答案
将模板与转换器结合使用:
<ListBox x:Name="lbxFileList">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=.}" ForeGround={Binding ., Converter={StaticResource ItemToBrushConverter}}/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
转换器应将您的 Item 转换为具有所需颜色的 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();
}
}
关于c# - 如何仅在 wpf 列表框的一行上更改前景色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161744/
我是一名优秀的程序员,十分优秀!