No, non va bene lo stesso.
Il problema è che i dati modificati sono gestiti dal DataContext a cui i dati appartengono, per cui se crei un nuovo DataContext, il nuovo DataContext non conosce le modifiche che sono state fatte.
Se utilizzi ObjectDataProvider con la modalità ObjectType, il DataProvider provvederà a creare una nuova instanza del tuo oggetto per l'accesso ai dati.
L'instanza creata dal provider è accessibile da C# attraverso il provider stesso.
Puoi utilizzare il seguente codice per ottenere la tua instanza:
((ObjectDataProvider)this.Resources["dbMsSqlDataContextDS"].ObjectInstance
Questo perchè il tuo provider è visibile a livello di form come risorsa e una volta che il provider ha creato l'instanza dell'oggetto che gli server per accedere ai dati,
poi la rende pubblica attraverso ObjectInstance.
Personalmente preferisco un approccio leggermente differente,
ovvero al caricamento della form fornisco io l'instanza per l'accesso ai dati al provider con un codice simile al precedente.
ObjectDataProvider prov = ((ObjectDataProvider)this.Resources["dbMsSqlDataContextDS"];
prov.ObjectDataType=null;
prov.ObjectInstance = myDataContextInstance;
In questo modo ho più controllo e posso riutilizzare il DataContext in scenari più vasti.
Ci sono anche altri modi per passare le sorgenti dati agli oggetti WPF e a volte è anche una questione di gusti personali 
Ciao