我正在创建一个构建图表的应用程序。图由添加到画布上的UserControls组成。我想使用在xaml中创建的格式化UserControl打印这些图表的集合。
PrintDialog pd = new PrintDialog();
FixedDocument document = new FixedDocument();
FixedPage page = new FixedPage();
document.DocumentPaginator.PageSize = new Size(pd.PrintableAreaWidth,pd.PrintableAreHeight);
page.Width = document.DocumentPaginator.PageSize.Width;
page.Height= document.DocumentPaginator.PageSize.Height;
PageTemplate template = new PageTemplate();
template.canvas = BuildCanvasFunction();
FixedPage.SetTop(template,0);
FixedPage.SetLeft(template,0);
page.Children.Add(template);
PageContent content = new PageContent();
content.Child = page;
document.Pages.Add(content);
pd.PrintDocument(document.DocumentPaginator, "Document");
模板。Xaml模板
<Grid>
<Grid.RowDefinition>
<RowDefinition Height="*"/>
<RowDefinition Height="6*"/>
</Grid.RowDefinition>
<TextBlock Text="Test" Grid.Row="0"/>
<Canvas Grid.Row="1" Name="canvas"/>
<Grid>
我遇到的问题是,虽然画布显示没有其子。模板只显示一个空白画布。我已经检查了调试器,以确认画布有它所有的子元素,它们只是没有被显示。
模板中的TextBlock被正确显示。模板的example .cs目前是空的,因为我没有对模板做任何事情,我只是用它来组织预先存在的控件。
图表通常在UI中按照以下顺序显示:TabControl>TabItem>ScrollViewer>Canvas。这个配置正确地显示了图表。当图被添加到模板中时,子图不能显示。
当你说"printed"你用什么驱动程序?打印到PDF驱动程序?因为我有各种各样的问题。我有一些文档在物理打印机上打印得很好,但在MS打印到pdf驱动程序上却是空白的。
但是如果我使用第三方的Print-To-PDF驱动程序,它们看起来很棒。