WPF Listview с ListViewCollection - Listview, не отражающий изменения коллекции. - PullRequest
0 голосов
/ 29 июля 2011

У меня есть просмотр списка, связанный с ListCollectionView.У LCV есть одно описание сортировки в любое время.Я обновляю коллекцию следующим образом:

IEditableCollectionView IEditView = lvBatches.Items as IEditableCollectionView;

IEditView.EditItem(m_collectionView.CurrentItem);//I've also tried passing MyListView.SelectedItem
((TestData)IEditView.CurrentEditItem).start = frm.newDate;
((TestData)IEditView.CurrentEditItem).edited = true;
IEditView.CommitEdit();

Однако, когда я это делаю, ничего не происходит с элементами списка.Если я пересортирую список, изменения будут отражены.Функция Refresh () для коллекции также обновляет представление списка, но это похоже на использование динамита для открытия банки с газировкой, насколько я понимаю.

У кого-нибудь есть идеи?Мой код выше похож на примеры, которые я вижу в сети, поэтому я не думаю, что это проблема.Есть ли какие-то распространенные ошибки, о которых люди знают, может быть, что-то связанное с сортировкой?У меня было это работает, а теперь нет, и я понятия не имею, что сломало это.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 30 июля 2011

См. Мой ответ о создании VeryObservableCollection .

Проблема, с которой вы сталкиваетесь, состоит в том, что коллекции не обновляются с простыми изменениями свойств - CollectionChanged срабатывает только при добавлении или удалении элементов. Поэтому вам нужно перехватить PropertyChanged и отправить CollectionChanged при изменении свойства, что и делает VeryObservableCollection.

1 голос
/ 30 июля 2011

Вы звоните NotifyPropertyChanged? Если Refesh () показывает правильные значения, то, скорее всего, они находятся в коллекции, но пользовательский интерфейс должен знать, чтобы обновить значение.

...