0

したがって、Silverlightグリッドを印刷するには、Childrenに追加する必要がありました。LayoutRootとChildrenからそれらを削除し、印刷に使用しているCanvasに追加します。(一度に1つの親要素にしかアタッチできないため)。

これは問題ありませんが、グリッドがLayoutRootから削除されているため、画面が空白のままになります。

そこで、Children.Remove from the Canvas and Children.Add back to 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
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 に答える