Это довольно упрощенное решение, но вы не можете просто подписаться на событие PropertyChanged и распространить вызов?
Е.Г.
MyContainedObject.PropertyChanged += PropertyChangedHandler;
и затем в вашем обработчике:
private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e)
{
this.OnPropertyChanged(e.PropertyName);
}
Это прекрасно работает, когда ваши объекты имеют свойства с одинаковыми именами. Если у вас есть свойства с разными именами, вам придется проделать немного больше работы для преобразования значений свойств.
private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e)
{
switch(e.PropertyName)
{
case "Property1":
this.OnPropertyChanged("ADifferentProperty1");
break;
case "Property2":
this.OnPropertyChanged("ADifferentProperty2");
break;
default:
this.OnPropertyChanged(e.PropertyName);
break;
}
}