My approach is to extend OOP concepts with embedded types and have two types of events: PropertyChange and DocumentChange.
Curently in Shape, the public MVVM framework I have, those concepts are only partially developed.
Contact me privately for details.