#WPF,在使用PrintDialog.PrintDocument打印FlowDocument时,页面上的UI元素会消失的问题
我这里用了一个测试页来展示问题
页面上有一个FlowDocumentScrollViewer,里边是要打印的FlowDocument,
<FlowDocumentScrollViewer Grid.Row="1">
<FlowDocument Name="document">
<BlockUIContainer>
<RichTextBox Height="500">
</RichTextBox>
</BlockUIContainer>
</FlowDocument>
</FlowDocumentScrollViewer>
打印的代码也很简单
private void Button_Click(object sender, RoutedEventArgs e)
{
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
var paginator = ((IDocumentPaginatorSource)document).DocumentPaginator;
dialog.PrintDocument(paginator, "Print Test");
}
}
页面效果如下
点击按钮打印后,打印出的PDF是正常的,但是UI上的RichTextBox就消失了,
此时如果滚动滚动条,就会报错
System.NullReferenceException:“Object reference not set to an instance of an object.”
在 MS.Internal.PtsHost.FlowDocumentPage.UpdateViewport(FSRECT& viewport, Boolean drawBackground)
如果是调整窗口大小的话,元素就会重新显示出来,如下图,
希望有朋友指点一下,谢谢!