I need to capture when anything changes in the diagram (adding a new node, deleting a node, adding a link, moving a node, etc.)
You could try using a Model.Changed event handler.
However, whether or not you will then get node Location changes depends on whether you have two-way data-binding on the Node.Location property. And similarly for other properties that the model does not know about.
@walter, does Model.changed event also get triggered when layout of a diagram changes ?
This is a GoXam question, not GoJS. Although the answer is vaguely analogous to one for GoJS.
The Diagram.LayoutCompleted event is best for that purpose.
The above mentioned LayoutUpdated event is on UIElement and has almost nothing to do with the contents of the Diagram.
The only reasonable and general way to get events about changes is to get them for the model, but as I said above, that depends on the state being in the model, normally via a TwoWay Binding.