我们的应用程序在画布上有许多对象;画布包含在滚动查看器中。我们也有一个滑块控件和一些按钮,总是居中在窗口的顶部。
我试图通过捕获应用程序的位图来打印应用程序,但没有任何“装饰” - 滑块,按钮或滚动条。SL 4 - 强制重绘视觉树
_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;
滑块和按钮被隐藏,如预期的那样,但滚动条不是。
我怀疑应用程序需要重绘布局以隐藏滚动条。有没有办法做到这一点?由于SL 4中的打印操作必须由UI手势启动,所以这变得更加复杂; (AFAIK)无法以编程方式启动,因此此重绘必须发生在PrintDocument事件处理程序之一中。
感谢您的任何建议....
您可以显示您正在打印的Canvas的Xaml吗? “捕捉位图”评论听起来有点偏离,你能否说得通吗? – AnthonyWJones 2010-08-31 19:58:38
我无法真正显示xaml,因为所有对象都在运行时添加,并大量使用模板。我相信这是导致恶作剧的模板;将Canvas传递给PrintDocument之后,该树永远不会重绘(至少不会完全)。由于打印输出是大量缺失或未完成绘制的对象,因此显示出来。 我们试图捕获Canvas的位图来解决未完成绘制的对象问题。 – Number8 2010-09-08 14:52:48
你可以发布你的捕获位图的代码吗? – 2011-06-30 06:43:56