SL 4 - 强制重绘可视树

Num*_*er8 7 silverlight silverlight-4.0

我们的应用程序在画布上有许多对象; 画布包含在滚动查看器中.我们还有一个滑块控件和一些按钮,总是位于窗口顶部的中心.
我试图通过捕获应用程序的位图来打印应用程序,但没有任何"装饰" - 滑块,按钮或滚动条.

        _scrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
        _scrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
        var s = xSlider;
        s.Visibility = Visibility.Collapsed;
        var b = xPlusButton;
        b.Visibility = Visibility.Collapsed;
        b = xMinusButton;
        b.Visibility = Visibility.Collapsed;

        b = xButton;
        b.Visibility = Visibility.Collapsed;
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,滑块和按钮是隐藏的,但滚动条不是.
我怀疑应用程序需要重新绘制布局才能隐藏滚动条.有没有办法让这种情况发生?由于SL 4中的打印操作必须由UI手势启动,因此这变得更加复杂.没有办法(AFAIK)以编程方式启动,因此这个重绘必须在其中一个PrintDocument事件处理程序中进行.

谢谢你的任何建议......

Aka*_*ava 7

试试以下,

canvas.InvalidateMeasure();
canvas.InvalidateArrange();
Run Code Online (Sandbox Code Playgroud)

您也可以使用WritableBitmap捕获运行时映像并将图像发送到打印文档(如果打印文档忽略渲染变换).

此外,如果您使用WritableBitmap捕获元素,那么您应该将RenderTransform作为第二个参数.你可以将代码发布到捕获屏幕吗?