Вызов события при изменении свойства в ObservableCollectionC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Вызов события при изменении свойства в ObservableCollection

Сообщение Anonymous »


Я хочу вызвать событие при изменении свойства в DataGrid, чтобы проверить его допустимость, сохранить его обратно в исходный файл и т. д.

Справочная информация: У меня есть DataGrid, привязанный к наблюдаемой коллекции. На этом этапе я успешно привязал свою наблюдаемую коллекцию к представлению, однако мне не удалось вызвать событие при изменении свойства. Двусторонняя привязка также работает, поскольку я мог наблюдать изменения в коллекции посредством отладки. Я наследую INotifyPropertyChanged через BindableBase(Prism).

public ObservableCollection Cfg { получить {вернуться _cfg; } set { SetProperty (ref _cfg, value); } } частная ObservableCollection _cfg; CfgData содержит 4 свойства:

публичный класс CfgData { общественная строка Handle {get; набор; } общедоступная строка Адрес {get; набор; } общедоступная строка Value {get; набор; } общедоступная строка Описание {get; набор; } public CfgData (дескриптор строки, адрес строки, значение строки) { this.Handle = дескриптор; this.Адрес = адрес; это.Значение = значение; } public CfgData (дескриптор строки, адрес строки, значение строки, описание строки) { this.Handle = дескриптор; this.Адрес = адрес; это.Значение = значение; это.Описание = описание; } } Я заполняю свою коллекцию Observable значениями, считанными из CSV. файл

public ObservableCollection LoadCfg(string cfgPath) { вар cfg = новый ObservableCollection(); пытаться { используя (var Reader = новый StreamReader(cfgPath)) { пока (!reader.EndOfStream) { вар линия = Reader.ReadLine(); значения var = line.Split(';'); если (значения.Длина == 3) { cfg.Add(new CfgData(значения[0], значения[1], значения[2])); } иначе, если (values.Length == 4) { cfg.Add(new CfgData(значения[0], значения[1], значения[2], значения[3])); } } } } поймать (Исключение x) { журнал.Отладка (х); } вернуть файл конфигурации; } Мой XAML



Проблема Двухсторонняя привязка обновляет коллекцию в моей модели просмотра. Однако я хотел бы проверить ввод перед его сохранением. Я также хотел бы иметь возможность добавить некоторые функции, например вызов метода при проверке редактирования. Поэтому я попытался использовать несколько способов обработки событий, например

this.Cfg.CollectionChanged += новый NotifyCollectionChangedEventHandler(Cfg_OnCollectionChanged); или

this.Cfg.CollectionChanged += Cfg_OnCollectionChanged; Однако они никогда не вызывали функции, когда я менял сетку данных.

Вопросы Как создать обработчик событий, который вызывается при изменении свойства? Нужно ли мне сохранять весь набор данных или я могу сохранить только измененную строку данных/свойство?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»