У меня есть класс, который заполняет 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 итераций?
Работает только с отображаемыми элементами ....