微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何在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>

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

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,CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐