问题描述
public class person
{
string name;
string color;
public override string ToString()
{
return name;
}
}
颜色在字符串中被格式化为#FFFFFF。有没有办法在代码隐藏或 XAML 中将每个单独的项目背景颜色设置为存储在人员对象中的颜色?我将列表框的 itemsource 设置为列表:
ListBox.ItemsSource = listofpeople;
此时我已经尝试遍历 ListBox.items 集合,但这似乎只返回了底层的“人物”对象,而不是我猜测我需要编辑的 ListBoxItem 对象背景属性?这在后面的代码中甚至可能吗?
解决方法
你可以有一个合适的 ItemContainerStyle。
绑定 Background="{Binding Color}"
有效,因为有从 string
到 Brush
的内置自动类型转换。
<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>
Person 类必须声明公共属性:
public class Person
{
public string Name { get; set; }
public string Color { get; set; }
}