Я пытаюсь выполнить итерацию по моим строкам RadGridView, но когда у меня есть более 20 или 30 элементов, цикл не получает все строки.WPF - цикл RadGridView через строки. Не удается получить все строки
Например: используя этот код в radgridview с 5 элементами, я могу получить все и делать все, что захочу, но когда моя сетка имеет более 20 элементов, она получает всего 10 строк. Это ошибка или что-то в этом роде? Как я могу это решить?
Вот мой код:
private List<object> ReturnListFounds(string text)
{
List<object> a = new List<object>();
foreach (var item in myGrid.Items)
{
if (item == null)
continue;
GridViewRow row = myGrid.ItemContainerGenerator.ContainerFromItem(item) as GridViewRow;
if (row == null)
continue;
foreach (GridViewCell cell in row.Cells)
{
if (cell != null && cell.Value != null)
{
string str = cell.Value.ToString();
if (str.Equals(text, StringComparison.InvariantCultureIgnoreCase) || str.ToLower().Contains(text.ToLower()))
{
a.Add(row.Item);
break;
}
}
}
}
return a;
}
@Edit
я узнал проблему. Дело в том, что метод «ItemContainerGenerator.ContainerFromItem (item) как GridViewRow» возвращает значение null, если элемент находится за пределами области просмотра. Но я использую этот метод в сетке, содержащей 123 элемента, и я могу получить только строку для 20 первых элементов. Мне нужно получить все предметы, а не только те, которые находятся в области просмотра. Я уже пытался установить виртуализацию false (EnableRowVirtualization = false; EnableColumnVirtualization = false;), но она также не работала.
Есть ли способ получить все строки, используя этот метод?
Зачем вам нужно перебирать элементы VisualTree? – Spawn
Я хочу получить все ячейки из сетки ... Мне нужно его значение для сравнения со строкой, а также мне нужно, чтобы ячейки делали другую вещь. Но самое главное - сравнить значение с String. –