I'm confused by the numbering
Anyway just playing with Bounds and bindings here's what I'm seeing (without involving ContainerNodes) -
1. Mode = BindingMode.OneWay
2. NodeViewModel.Bounds = new_value
3. node.Bounds local value is a BindingExpression, node position updates successfully from it
4. I move the node, Bounds local value becomes a Rect
5. NodeViewModel.Bounds assignment no longer updates node position because BindingExpression has been removed from the dependency property
----------------------------------
1. Mode = BindingMode.TwoWay
2. NodeViewModel.Bounds = new_value
3. node.Bounds local value is a BindingExpression, node position updates successfully from it
4. I move the node, and since binding is two-way the property assignment updates NodeViewModel.Bounds
5. NodeViewModel.Bounds assignment still updates node position because the property local value is a BindingExpression.
So I'm guessing if your binding mode is still OneWay as in first post, try changing it to TwoWay. You can verify if binding is active by examining the result of node.ReadLocalValue(DiagramNode.BoundsProperty) - should be an instance of System.Windows.Data.BindingExpression.
Regards,
Slavcho