所以,为了打印我的Silverlight网格,我不得不将它们从LayoutRoot和Children中移除。将它们添加到我用于打印的Canvas中。 (因为它们一次只能附加到一个父元素上)。
哪个好,但是这会让我的屏幕留空,因为网格已从LayoutRoot中移除。
所以我尝试了Child.Remove from the Canvas and Children。添加回LayoutRoot,但它不会在屏幕上添加任何内容。
我该如何处理?感谢。
(使用Silverlght 5和VB.net)。
我的代码:
If PageCounter = 1 Then
Dim PrintSurface As New Canvas
Dim topPosition1 As Double = e.PageMargins.Top + 10
Dim topPosition2 As Double = e.PageMargins.Top + 600
CompChartGrid.SetValue(Canvas.TopProperty, topPosition1)
AttChartGrid.SetValue(Canvas.TopProperty, topPosition2)
LayoutRoot.Children.Remove(CompChartGrid)
PrintSurface.Children.Add(CompChartGrid)
LayoutRoot.Children.Remove(AttChartGrid)
PrintSurface.Children.Add(AttChartGrid)
e.PageVisual = PrintSurface
PrintSurface.Children.Remove(CompChartGrid)
PrintSurface.Children.Remove(AttChartGrid)
LayoutRoot.Children.Add(CompChartGrid)
LayoutRoot.Children.Add(AttChartGrid)
PageCounter += 1
e.HasMorePages = True
Exit Sub
End If
答案 0 :(得分:0)
这很可能是由于削波造成的。 在元素上设置Canvas.Top属性时,此值将保持不变直到被替换。因此,当您将CompChartGrid和AttChartGrid添加回LayoutRoot网格时,它们将分别由topPosition1和topPosition2偏移。
尝试拨打
CompChartGrid.ClearValue(Canvas.TopProperty)
和
AttChartGrid.ClearValue(Canvas.TopProperty)
然后元素应该在它们开始的地方结束。