Как реализовать механизм «Нужно ли мне сохранять» для контейнера данных? - PullRequest
3 голосов
/ 27 августа 2011

Предположим, что есть класс BindingList<Person{Name, age}> и класс PersonManager, который содержит список. В приложении каждый элемент управления привязывается к списку лиц, чтобы манипулировать им или получать обновления. Например. Список, содержащий имена людей, элемент управления, который обновляет возраст выбранного человека и т. Д.

Теперь я хочу реализовать для этого механизм «Нужно ли мне сохранять». Каким-то образом пользовательский интерфейс должен знать, был ли изменен PersonManager, чтобы сохранить его.

Хотя я должен перехватить событие INotifyPropertyChanged, которое реализует Person, и создать событие в PersonManager, которое вызывается при вызове propertyChangedEvent. Что-то вроде механизма пересылки событий.

Это, похоже, подвержено ошибкам. Любые предложения о том, как сделать это лучше?

1 Ответ

1 голос
/ 03 ноября 2011

Если элементы в BindingList реализуют INotifyPropertyChanged, то событие ListChanged BindingList сработает при возникновении одного из событий PropertyChanged элементов.

Поэтому вам нужно только обработать событие ListChanged BindingList в вашем PersonManager и установить грязный логический флаг (dirty - типичный указатель устаревших или несохраненных данных) в вашем PersonManager. Затем приложение может спросить PersonManager, не загрязнены ли какие-либо данные. Когда приложение сохраняет данные, оно сообщает PersonManager сбросить грязный флаг. Если ваш PersonManager также обрабатывает сохранение данных, он может сбросить свой собственный флаг.

Надеюсь, это поможет.

...