簡體   English   中英

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

[英]how is the foreground color changed on just one line of wpf listbox?

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>

轉換器應該將您的項目轉換為具有您想要的顏色的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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM