是否可以将 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}"
有效,因为有从 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>
人 class 必须声明 public 属性:
public class Person
{
public string Name { get; set; }
public string Color { get; set; }
}
如果我有一个像这样的简单对象:
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}"
有效,因为有从 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>
人 class 必须声明 public 属性:
public class Person
{
public string Name { get; set; }
public string Color { get; set; }
}