Как обновить существующий элемент ObservableCollection? - PullRequest
4 голосов
/ 29 апреля 2009

У меня есть экземпляр ObservableCollection, привязанный к списку WPF с двумя отдельными шаблонами данных (один для отображения, другой для редактирования). Шаблон данных для редактирования имеет одностороннюю привязку к текстовому полю и кнопку Сохранить.

Какие изменения необходимо внести, чтобы при нажатии кнопки «Сохранить» (после перевода элемента списка в режим редактирования) значение, которое я изменяю в текстовом поле, заменяет значение в ObservableCollection (и на дисплее)?

Ответы [ 3 ]

9 голосов
/ 29 апреля 2009

Элементы в вашей коллекции должны быть такого типа, который реализует интерфейс INotifyPropertyChanged. Таким образом, ваш список будет уведомлен, что значение свойства в вашем объекте одного элемента изменилось. ObservableCollection вызывает событие CollectionChanged только при изменении коллекции (элементы добавлены, удалены и т. Д.)

Цитата из статьи библиотеки MSDN на ObservableCollection

Для полной поддержки передачи данных значения из привязки исходных объектов к цели привязки, каждый объект в вашем коллекция, которая поддерживает привязку свойства должны реализовывать соответствующее свойство изменено механизм уведомления, такой как Интерфейс INotifyPropertyChanged.

1 голос
/ 27 февраля 2011

Я решил похожую проблему, используя класс BindingList .

Событие ListChanged вызывается как при изменении коллекции, так и при изменении отдельных элементов.

Введено в .Net 3.5

1 голос
/ 29 апреля 2009

Чтобы уведомление об изменении происходило в привязке между связанным клиентом и источником данных, тип привязки должен:

  • Реализация INotifyPropertyChanged интерфейс (предпочтительно).
  • Укажите событие изменения для каждого свойство связанного типа.

Не делайте обоих.

Источник: MSDN: интерфейс INotifyPropertyChanged

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