Операция не поддерживается в коллекции только для чтения c # wp7 - PullRequest
7 голосов
/ 13 декабря 2011

Я пытаюсь реализовать ленивый элемент «загрузить больше», когда пользователь попадает в конец списка, но каждый раз, когда я пытаюсь добавить новые элементы в список, я получаю такие результаты:

«Операция не поддерживается в коллекции, доступной только для чтения».

Я уже пробовал несколько решений, от форумов до блогов, которые, похоже, не работают.Я даже не могу понять логику проблемы, которая кажется мне немного странной.

Я занимаюсь в основном загрузкой списка элементов и назначением источника элементов моего списка.

  wineFilterListBox.ItemsSource = wines;

Когда пользователь попадает в конец списка, я добавляю больше элементов (как в твиттерном приложении для wp7)

public ObservableCollection<Wine> wines;
...

   if (atBottom)
   {
       int Count = page.wineFilterListBox.Items.Count;
       int end = Count + 10;
       for (int i = Count; i < end; i++)
       {
           page.LoadWineList(Count);
       }
   }
...

   private void LoadWineList(int Count = 1)
   {
   ...
      wineFilterListBox.Items.Add(wines);
   }

Ответы [ 2 ]

9 голосов
/ 13 декабря 2011

Когда вы используете ItemSource, коллекция Items становится доступной только для чтения.Похоже, вам нужно добавить данные в коллекцию вместо свойства ListBox Items.

См. MSDN: ItemsControl.ItemSource Свойство

В частности, этот раздел:

Когда установлено свойство ItemsSource, коллекция Items становится доступной только для чтения и имеет фиксированный размер.

Попробуйте добавить элементнепосредственно в коллекцию wines, поскольку ваша коллекция является `ObservableCollection ':

Вы должны установить ItemsSource для объекта, который реализует интерфейс INotifyCollectionChanged, чтобы изменения в коллекции отражались вItemsControl.Класс ObservableCollection (Of T) определяет такой объект.

0 голосов
/ 13 ноября 2012

К вашему сведению, если вы намеренно не хотите использовать ObservableCollection для установки ItemsSource Вы можете добавить Wine вручную к вашему wineFilterListBox.Items

for (int i = Count; i < 10; i++)
{
    wineFilterListBox.Items.Add(new Wine());
}

Это приводит к тому, что wineFilterListBox.Items не становится доступным только для чтения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...