INotifyPropertyChanged или INotifyCollectionChanged с DataTable? - PullRequest
3 голосов
/ 27 апреля 2011

Привет, у меня возникли проблемы с DataTables.Итак, что мне нужно, это обнаруживать всякий раз, когда я меняю любую ячейку в DataGrid DataTable, которая связана.

Как это сделать?С INotifyPropertyChanged или с INotifyCollectionChanged?

Примечание: я пытаюсь с INotifyPropertyChanged, но он обнаруживает только когда я устанавливаю какое-то значение в DataTable, и никогда, когда я изменяю любое значение любой ячейки вDataGrid, я уже пробовал OneWay и TwoWay, но ничего не происходит.

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

Ответы [ 2 ]

9 голосов
/ 27 апреля 2011

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

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

См. Раздел «Как реализовать коллекции» на этой странице.

Вот способ решения вашей проблемы:

  • Создайте новый класс, который предоставляет свойства, которые в настоящее время содержатся в каждом DataRow.В этом классе реализуйте INotifyPropertyChanged.
  • Вместо DataTable, используйте ObservableCollection<T> или ваш новый класс.

ObservableCollection уже реализует INotifyCollectionChanged, поэтомуэто избавляет вас от необходимости реализовать его самостоятельно.

0 голосов
/ 27 апреля 2011

если вы установите для элемента источника вашей таблицы данных значение datatable, то wpf создаст IBindingListView, который связан с сетью данных.

Теперь вы можете редактировать, добавлять и удалять элементы в вашей таблице данных через сетку данных. если вы хотите знать, когда ячейка в вашей таблице данных изменяется, вы можете подписаться на событие DataTable.ColumnChanged.

почему вы хотите знать, когда ячейка меняется?

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