带有彩色项目的 wpf 列表框

wpf listbox with colorized items

我正在制作一个为黑白图片着色的应用程序。 我有一个列表框,用于显示我当前的调色板。

十六进制代码很难被人类(至少我)阅读,这就是为什么我想为我的 ListBox 中的项目着色。

我的列表框现在看起来像这样:

作为我的意思的一个例子,我有一个简单的文本框,它被着色了:

System.Drawing.Color? color = cl.ColorFromHexString(Basecolor.Text);
if (color != null)
{
    System.Drawing.Color col = (System.Drawing.Color)color;
    this.Basecolor.Foreground = new SolidColorBrush(cl.ToMediaColor(col));
}

所以我的目标是为每个条目设置不同的颜色:

使用以下代码分配列表框项(可能不是最佳实践):

List<String> ColorStringPalette = new List<string>();
private void AddColorButton_Click(object sender, RoutedEventArgs e)
{
    System.Drawing.Color? color = cl.ColorFromHexString(ColorHexCode.Text);
    if (color != null)
    {
        if (!ColorStringPalette.Contains(ColorHexCode.Text))
        {
            ColorStringPalette.Add(ColorHexCode.Text);
        }
        ColorList.ItemsSource = ColorStringPalette;
    }
}

为列表框的各个项目设置前景色的合适方法是什么?

你可以更改ItemTemplate并绑定Foreground(它需要刷但是会从字符串转换):

<ListBox.ItemTemplate>
    <DataTemplate>
         <TextBlock Text="{Binding}" Foreground="{Binding}"/>
    </DataTemplate>
</ListBox.ItemTemplate>