Silverlight - 将网格附加到画布以进行打印后的屏幕空白

时间:2013-02-15 13:50:33

标签: vb.net silverlight silverlight-5.0

所以,为了打印我的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

1 个答案:

答案 0 :(得分:0)

这很可能是由于削波造成的。 在元素上设置Canvas.Top属性时,此值将保持不变直到被替换。因此,当您将CompChartGrid和AttChartGrid添加回LayoutRoot网格时,它们将分别由topPosition1和topPosition2偏移。

尝试拨打

CompChartGrid.ClearValue(Canvas.TopProperty)

AttChartGrid.ClearValue(Canvas.TopProperty)

然后元素应该在它们开始的地方结束。