Как отловить изменение ItemsSource в WPF DataGrid после редактирования ячейки

856
29 января 2017, 12:02

Для WPF DataGrid привязан источник данных ObservableCollection<>. Колонки заданы как обычные DataGridTextColumn. После редактирования ячейки, если нажать например Enter, изменяется свойство из соответствующего ряда, но обработчик события CollectionChanged коллекции-источника не вызывается. Как отловить момент, когда после изменения текста ячейки меняется свойство в связанном объекте?

Answer 1

Событие CollectionChanged отправляется лишь при изменении самой коллекции, то есть, добавлении/удалении/замене целых элементов. При изменениях самих элементов CollectionChanged не отправляется.

Для отлова изменения внутри элемента вам нужно (при добавлении этого элемента) подписаться на событие PropertyChanged, если ваш тип данных элемента поддерживает интерфейс INotifyPropertyChanged. Впрочем, DataGrid по идее делает это самостоятельно, вам не должно быть нужно об этом заботиться.

Если же ваш элемент не имплементирует INotifyPropertyChanged, то нормального метода отловить изменения внутри элемента нет. Поэтому объекты, используемые в качестве источника данных для UI-контролов, практически обязаны имплементировать INotifyPropertyChanged.

Answer 2

У элемента коллекции, у нужного свойства в сеттере прописать логику.

Можно управление построить на основе событий.

т.е. ObservableCollection<MyClass> MyClassCollection{get;set;}, в свою очередь

class MyClass
{
    private string _property;
    public string Property
    {
         get{return _property;}
         set{
                //event
                _property = value;
            }
    }
}
READ ALSO
VK, обработка сообщения

VK, обработка сообщения

Пишу простой бот ВК на С#, отвечающий в конфе от моего имени на фразу "Евгений, погода"Не пойму немного, как отлавливать прием сообщения? Не подскажите...

494
Prism DelegateCommand

Prism DelegateCommand

Добрый день, возникла внезапная проблема, может кто сталкивался

317
Не могу понять, в чем проблема с mysql? [требует правки]

Не могу понять, в чем проблема с mysql? [требует правки]

Есть класс SQLHelper, но ничего неработаетне могу понять в чем дело

333
Редактирование WooCommerce Product таблицу?

Редактирование WooCommerce Product таблицу?

Хочу вынести возможность управления порядка товара, где идут метки, категория, дата и тд

704