Imprimir imágenes WPF con patrón MVVM

Mi ViewModel tiene un PrintCommand que ejecuta un Método llamado PrintCalendar (). Pero el Calendario también conocido como DataGrid está en la Vista, entonces, ¿cómo puedo obtener mi DataGrid en ViewModel?

¿Ensuciarme las manos y hacer todo eso en código subyacente? Oh no...

PrintDialog printDlg = new PrintDialog();
printDlg.PrintVisual(datagrid, "Grid Printing.");

Respuestas a la pregunta(1)

Su respuesta a la pregunta