Hi Michael -
I think what you're missing here is the behavior of an item versus the collection. If I have a collection of items and I databind that to an ItemsSource, the containing object (say, an ItemsControl) has a reference to the ObservableCollection that
was pushed in via the databind. It doesn't have any visibility into the items in the collection - it's just listening to CollectionChanged events.
So you can mess with the item, and it will update values that are bound to item properties, as you're doing. But if you want to affect the container, you need to go to the collection itself and remove/add the value.
So in your case, I assume you'd do something like
var newItem = new ProductViewModel();
var myCollection = DataManager.Current.Load<Products>("23424");
// now you need to decide whether to do a Save on the Collection or just an Invalidate so that next time someone asks for it, they get a fresh copy from the server.
I'm also not sure you need the proxies in this case since you created the full value.