是否可以将 WPF ListBoxItem 的背景设置为以字符串形式存储在对象 属性 中的十六进制颜色?

Is it possible to set a WPF ListBoxItem's background to a hex color stored as a string inside an objects property?

如果我有一个像这样的简单对象:

public class person
{
    string name;
    string color;

    public override string ToString()
    {
        return name;
    }
}

其中颜色格式为字符串中的#FFFFFF。有没有办法在代码隐藏或 XAML 中将每个单独的项目背景颜色设置为存储在人员对象中的颜色?我正在将列表框的项目源设置为列表:

ListBox.ItemsSource = listofpeople;

此时我已经尝试遍历 ListBox.items 集合,但这似乎只是 return 底层的“人”对象而不是我 [=19= 的 ListBoxItem 对象]猜测我需要编辑背景属性?这甚至可以在代码隐藏中实现吗?

您可以有一个合适的 ItemContainerStyle。

绑定 Background="{Binding Color}" 有效,因为有从 stringBrush 的内置自动类型转换。

<ListBox x:Name="ListBox">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="Background" Value="{Binding Color}"/>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

人 class 必须声明 public 属性:

public class Person
{
    public string Name { get; set; }
    public string Color { get; set; }
}