0

因此,为了打印我的 Silverlight 网格,我必须将它们从 LayoutRoot 和 Children 中删除。将它们添加到我用于打印的 Canvas 中。(因为它们一次只能附加到一个父元素)。

这很好,但这会使我的屏幕空白,因为网格已从 LayoutRoot 中删除。

所以我尝试从 Canvas 和 Children.Remove 中删除 Children.Add 回 LayoutRoot,但它没有将任何内容添加回屏幕。

我应该如何处理?谢谢。

(使用 Silverlight 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
4

1 回答 1

0

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

试着打电话

CompChartGrid.ClearValue(Canvas.TopProperty)

AttChartGrid.ClearValue(Canvas.TopProperty)

然后元素应该回到它们开始的地方。

于 2013-02-15T18:27:28.097 回答