Стоит отметить, что sizeof
не помогает при работе со значением массива, которое распалось на указатель: хотя он указывает на начало массива, компилятору он совпадает с указателем на один элемент этого массива. Указатель не «помнит» ничего о массиве, который использовался для его инициализации.
int a[10];
int* p = a;
assert(sizeof(a) / sizeof(a[0]) == 10);
assert(sizeof(p) == sizeof(int*));
assert(sizeof(*p) == sizeof(int));
Похоже, что базовый тип исходной коллекции - т.е. TheList.ItemsSource
не является List
, а возможно IEnumerable
. Вот статья с дополнительной информацией.
Быстрое решение - использовать List
в качестве ItemsSource
для TheList
.