Here is the error.
The calling thread cannot access this object because a different thread owns it.
here is an example project.
The LogIn window starts a new thread to load all the data and main gui and also hands updates to a splash screen. Everything on this thread appears to work fine including the XamDataGrid.
I don't understand why it gives the error since the Report was created on the thread that is trying to access it and there are other UI elements in use on the same thread and they work just fine.
I believe this is the same issue discussed here and is a bug/limitation of the WPF framework's print dialog.
Here is a sample project using the alternative print dialog shown in the link provided by Andrew.
Hopefully the sample project will be of use to someone else browsing this thread.