gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:17:21 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com