我有一个类,通过传递对象列表来填充ListView。该类使用反射查看每个对象的属性以生成ListView。如何更改ListView中一行的背景颜色。
这个页面正是我正在寻找的。唯一的问题是我的ListView绑定到对象列表。换句话说,ListView的每个项都是绑定的对象,而不是ListViewItem。我假设这就是为什么我无法将ListView中的某些项强制转换为ListViewItem的原因。例如,当我执行以下操作时:
我遇到了InvalidCastException异常,因为如果我像这样在ListView中物理添加对象:listview.items.add(someObject),那么这将起作用,但是因为我正在将列表绑定到ListView,所以该行不起作用。我认为这就是我无法进行转换的原因。我想要进行转换的原因是ListViewItem具有Background属性。
编辑
我可以在前12个对象中尝试以下操作:
它只适用于正在显示的项目....
这个页面正是我正在寻找的。唯一的问题是我的ListView绑定到对象列表。换句话说,ListView的每个项都是绑定的对象,而不是ListViewItem。我假设这就是为什么我无法将ListView中的某些项强制转换为ListViewItem的原因。例如,当我执行以下操作时:
ListViewItem someItem = (ListViewItem)listView1.Items[0];
我遇到了InvalidCastException异常,因为如果我像这样在ListView中物理添加对象:listview.items.add(someObject),那么这将起作用,但是因为我正在将列表绑定到ListView,所以该行不起作用。我认为这就是我无法进行转换的原因。我想要进行转换的原因是ListViewItem具有Background属性。
编辑
我可以在前12个对象中尝试以下操作:
for (int i = 0; i < listView1.Items.Count; i++)
{
var lvitem = listView1.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem;
lvitem.Foreground = Brushes.Green;
}
我遇到了这个错误:
我也尝试过这个:
foreach (Tiro t in listView1.Items)
{
var lvitem = listView1.ItemContainerGenerator.ContainerFromItem(t) as ListViewItem;
if (t.numero == 0 || t.numero == 37)
{
//lvitem.Background = Brushes.Green;
lvitem.Foreground = Brushes.Green;
}
else if (t.numero % 2 == 0)
{
//lvitem.Background = Brushes.Red;
lvitem.Foreground = Brushes.Red;
}
else
{
//lvitem.Background = Brushes.Gray;
lvitem.Foreground = Brushes.Black;
}
}
我得到了相同的错误:
它只适用于正在显示的项目....