Пользовательская коллекция аварийно завершает работу DataGrid при редактировании - PullRequest
6 голосов
/ 03 марта 2011

В настоящее время я пытаюсь привязать DataGrid.ItemsSource к пользовательской RowCollection, которая реализует IList и INotifyCollectionChanged:

Public Class RowCollection(of T)<br> Implements IList(Of T)<br> Implements INotifyCollectionChanged<br> Private _List As New List(Of T)<br> ...

(Извините за код VB, я скоро переведу весь свой код на C #.)

Обратите внимание, что класс не является производным от любой существующей коллекции CLR. Я создал свой собственный класс, потому что мне нужно переопределить GetItemAt, чтобы реализовать подкачку записей. Коллекция внутренне добавляет и удаляет объекты из собственного закрытого списка _List.

Теперь я могу просматривать элементы в DataGrid, но как только я дважды щелкаю ячейку для редактирования, я получаю InvalidOperationException: EditItems недоступно. .

У меня вопрос: какие еще интерфейсы я должен реализовать, чтобы сделать мою коллекцию полностью совместимой с DataGrid?

1 Ответ

3 голосов
/ 03 марта 2011

Здесь вы можете прочитать следующее:

Редактирование

По умолчанию вы можете редактировать элементы прямо в DataGrid. Гарантировать что изменения могут быть зафиксированы и Отменено правильно, объекты в DataGrid должен реализовывать Интерфейс IEditableObject. Кроме того, вы можете установить IsReadOnly свойство true, чтобы отключить редактирование в DataGrid.

Интерфейс IEditableObject здесь Также см. IEditableCollectionView здесь

...