ObservableCollections и изменения свойств в C # - PullRequest
1 голос
/ 31 октября 2011

Я работаю с наблюдаемой коллекцией класса Job, который я определил.Я связал метод для обработки события INotifyCollectionChanged.MSDN сообщает мне, что INotifyCollectionChanged является «слушателем динамических изменений, например, когда элементы добавляются и удаляются, или обновляется весь список», но я хотел бы прослушать изменения свойств любого из классов заданий вколлекция, есть обработчик событий для этого?Я понимаю, что есть INotifyPropertyChanged интерфейс, но я хочу, чтобы это работало с коллекцией.

РЕДАКТИРОВАТЬ:

Я смущен, если честно, поэтому я должен дать дополнительную справочную информацию длячто я делаю, я могу получить ответ.У меня есть это свойство в классе 'Job':

    public Boolean IsPlanned
    {
        get
        {
            return this.Storage<Job>().isPlanned;
        }
        set
        {
            var storage = this.Storage<Job>();

            if (storage.isPlanned != value)
            {
                storage.isPlanned = value;
                this.OnPropertyChanged(() => this.isPlanned);
                MessageBox.Show("IsPlanned property was changed on one of the jobs " + this.Subject);
            }
        }
    }

Этот класс работы на самом деле наследуется от класса назначений элемента управления telerik (который, как и случается, реализует INotifyPropertyChanged).Из документации Telerik я также получил вышеуказанный код (за исключением окна сообщения).Теперь, когда я изменяю это логическое значение ОДИН РАЗ, эта строка окна сообщения выполняется 5 раз.

Любая помощь приветствуется !!

РЕДАКТИРОВАТЬ 2: Пути, в которых IsPlanned изменился:

PresentationManager.Instance.AllJobs.Single(o => o.JobGuid.Equals(((Job)state.DraggedAppointments.First()).JobGuid)).IsPlanned = true;

PresentationManager.Instance.AllJobs.Single(o => o.JobGuid.Equals(((Job)payload.DraggedAppointments.First()).JobGuid)).IsPlanned = false;

Они оба из разных классов, которые используются для определения переопределений для моего пользовательского поведения перетаскивания (из списка).

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Реализуйте интерфейс INotifyPropertyChanged в своем классе Job. Это должно позволить вам использовать PropertyChanged на вашем ObservableCollection<Job>.

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

0 голосов
/ 31 октября 2011

Вот один из примеров StackOverflow по реализации ObservableCollection, который также вызывает события при изменении содержащихся элементов:

ObservableCollection, которая также отслеживает изменения элементов в коллекции

См. Reed Copsey 's в этой теме для ссылки на проект, который внедрил ObservableCollection, которая слушает его дочерние элементы.

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