Обновляйте ListView при обновлении источника данных коллекции

#c# #.net #data-binding #sorteddictionary #inotifycollectionchanged

#.net #wpf #привязка #Коллекции

Вопрос:

У меня есть ListView, который я привязываю к коллекции словарей, но в коллекцию добавляются новые элементы, listview не обновляется. Как этого можно достичь в WPF?

Ответ №1:

Обе стороны привязки WPF должны поддерживать интерфейс INotifyCollectionChanged, чтобы уведомлять об изменениях коллекции. Словарь это не поддерживает. Таким образом, вы можете либо использовать класс ObservableCollection (он не предоставляет таких функций, как поиск значения по связанному ключу), либо вы можете создать свой собственный класс ObservableDictionary, который реализует интерфейсы как IDictionary, так и INotifyCollectionChanged

PS: Если вам нужно привязать оба ключа и значения словаря — вы должны реализовать собственный класс, если этого достаточно, отображая либо ключи, либо значения — просто создайте ObservableCollection на основе dictionary.Ключи или словарь.Значения.

Полезные ссылки:

Комментарии:

1. На самом деле вам нужно реализовать не INotifyPropertyChanged , а INotifyCollectionChanged то, что реализовано ObservableCollection . См msdn.microsoft.com/en-us/library /…

2. Спасибо, что указали на эту ошибку, ответ будет обновлен в ближайшее время