#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. Спасибо, что указали на эту ошибку, ответ будет обновлен в ближайшее время