У меня та же проблема, что и вопрос, заданный в «Печать в Silverlight 4 ».
Чтобы обойти эту проблему, я попытался масштабировать корень преобразования моего визуального дерева перед печатью.
void document_PrintPage(object sender, PrintPageEventArgs e)
{
var renderScale = 1.0D;
if (LayoutRoot.ActualWidth > e.PrintableArea.Width)
renderScale = e.PrintableArea.Width/LayoutRoot.ActualWidth;
var scaleTransform = new ScaleTransform();
scaleTransform.ScaleX *= renderScale;
scaleTransform.ScaleY *= renderScale;
e.PageVisual = LayoutRoot;
e.PageVisual.RenderTransform = scaleTransform;
}
Теперь приведенный выше код правильно распечатывается с использованием визуальных элементов silverlight, помещенных на листе бумаги.
Теперь проблема в том, что само LayoutRoot
теперь уменьшено на экране.
Вопрос в том, можно ли мне создать клон LayoutRoot
перед применением масштабного преобразования?
Мой способ - снова применить преобразование масштаба после печати, но я хотел бы знать, есть ли способ клонировать визуальное дерево