With WPF, the UI ( or render I guess ) thread is kind of special. It'll try and run every 60th of a second. All of your View->ViewModel bound property read/writes are sort of banked up and updated on the UI thread. So you can alter a property a ton of times on a background thread but it will be updated on the UI thread. Command bindings ( like a button click bound to a command ) will happen on the UI thread so dealing with those on the same thread will block the UI update. Starting views and closing views can only be done on the UI thread.
I've not done much in the way of interactive 'gamey' stuff using WPF but I have done 3d scenes with moving camera's. The way I did this was to have an update thread which updated properties which were bound to the UI objects ( like position, orientation ). There was no UI thread specific things to do really. Apart from allocating the geometry and hooking it into the visual tree.
So WPF isn't really set up to work in a way you may be used too. But you could probably get something close by using a BackgroundWorker.
The BackgroundWorker class has a RunWorkerComplete method https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx. This allows you to start a background worker task and then update any UI specific stuff when its complete. And so I guess with some clever timing this would effectively give you an update & render hook which you may find to be more game loop familiar.