Да. Я сделал это Это не очень сложно.
Оберните ваш кадр в ScrollViewer, у которого обычно отключена горизонтальная и вертикальная прокрутка
Когда вы будете готовы к печати, включите вертикальную прокрутку. Это заставит кадр сказать, что он имеет бесконечное вертикальное пространство, поэтому он будет отображать весь контент. Затем вызовите UpdateLayout (), чтобы получить макет для обновления.
Реализуйте IDocumentPaginator, чтобы возвращать один и тот же кадр для каждой страницы, но каждый раз настраивайте клип и RenderTransform, чтобы отображать различную часть фактического кадра.
Печать с использованием пользовательского IDocumentPaginator
Приведенное выше описание предполагает, что вы хотите зафиксировать ширину рамки по ширине страницы и разбить ее на страницы по вертикали. Это будет подходящим для веб-страницы, но не для электронной таблицы. Для контента, подобного электронной таблице, вы должны установить ScrollViewer, чтобы разрешить прокрутку в обоих направлениях, предоставляя рамке бесконечное пространство в каждом направлении. В этом случае IDocumentPaginator такой же, за исключением того, что RenderTransforms и отсечение выбраны для итерации как по горизонтали, так и по вертикали.
Этот метод работает для любого содержимого WPF, а не только для фрейма.
См. Также
Постраничная печать WPF Visuals