MVVM should be implemented in a manner that the ViewModel is unaware of the View (if you're working ViewModel first, which is, to my opinion - the best way of working since it avoids spaghetti code which i've seen on several projects).
that way you don't need to handle DataContext on xaml level which is a huge advantge since the WPF engine sometimes has some Visual tree quirks that might cause problems when looking for DataContext from the visual tree.
From my experience (after doing many projects with Prism, Caliburn.Micro(best solution)), When you try to do something that you dont have access to (manipulating view from viewmodel), that means you've reached the logical limit of your design pattern.
So don't break the design pattern.
Best practice is these cases is to build your own control (or some wrapper control), create some dependency properties on it, bind to the data source on the view model, and handle changes in the data through that control, not in the VM.
best of luck.