У меня была проблема с использованием PrintVisual, когда пользователи масштабировали разрешение экрана и страница, которую я хотел распечатать, не соответствовала экрану. У меня была проблема с поиском простого описания, как это сделать. Поэтому я хотел бы поделиться этим с кем-то еще, кто ищет простое решение для этого.
//Init your UserControl
YourUC yUC = new YourUC();
yUC.DataContext = new YourVM();
// Setup fixed document for printing
var doc = new FixedDocument();
var page = new FixedPage();
var pageC = new PageContent();
page.Children.Add(yUC);
((IAddChild) pageC).AddChild(page);
doc.Pages.Add(pageC);
PrintDialog pd = new PrintDialog();
pd.PrintDocument(doc.DocumentPaginator, "YourDoc");