Что я должен делать с INotifyPropertyChanged при изменении дочернего списка - PullRequest
3 голосов
/ 21 февраля 2009

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

Если у меня есть что-то вроде


class C {
 private string text;
 public string Text {
  get { return text; }
  set {
   if(Text != value) {
    text = value;
    OnPropertyChanged("Text");
   }
  }
 }
}

Я знаю, что делать, но что, если свойство является изменяемым, возможно, я должен также уведомлять об изменениях в типе.

Если само свойство реализует INotifyPropertyChanged, предположительно, я могу обработать это событие и создать его, но я должен делать то же самое, если возникает ListChangedEvent (скажем, это IBindingList)?

Это .NET 2.0, поэтому никакие свойства зависимостей и т. Д. Не допускаются.

1 Ответ

1 голос
/ 21 февраля 2009

Если у вас есть свойство, предоставляющее сложный тип, вам не нужно вызывать событие PropertyChanged при изменении свойства сложного типа, только когда вы меняете экземпляр на сложный тип. Сложный тип должен вызывать свое собственное событие PropertyChanged при изменении одного из его свойств (вам не нужно передавать событие родительскому объекту).

Чтобы повторить, вы должны вызывать событие PropertyChanged только при изменении значения свойства, а не при изменении дочерних свойств. Приведенный вами пример кода - это то, как должны выглядеть все ваши наборы свойств.

...