выходной скриншот
я есть класс, который заполняет ListView, передавая список объектов. Класс использует отражение, чтобы увидеть свойства каждого объекта для генерации ListView. Как я могу изменить цвет фона строки в ListView.
Этотстраница делает именно то, что я ищу. Единственная проблема заключается в том, что мой 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;
}
}
и я получаю ту же ошибку:
Я не понимаю, почему lvitem имеет значение null после 12 итераций?
Он работает только с элементами, которые отображаются ....