Вы делаете это:
// get some Message from OC<Message> collection Message
var message = Messages.First();
message.Answers.Add(new CAnswer { Text = "HURRDURR" }); // add an answer
но ваше CMessage будет вызывать RaisePropertyChanged только тогда, когда вы сделаете это
var message = Messages.First();
var answers = new ObservableCollection<CAnswer>();
answers.Add(new CAnswer { Text = "LOL" });
message.Answers = answers; // triggers here
Первое вызывает событие CollectionChanged из коллекции Ответов. Вторая изменяет коллекцию «Ответы», что вызывает срабатывание вашего метода set
, что вызывает событие PropertyChanged вашего класса CMessage.
Кстати, вы делаете это неправильно. Вы не должны позволять людям устанавливать свойство вашей коллекции. Это не лучшая практика, позволяющая устанавливать для свойства значение null (что плохо) и т. Д. У вас должны быть только коллекции свойств только для чтения. Если пользователи заинтересованы в изменении свойства, им следует подписаться на событие CollectionChanged вашего объекта.