【问题标题】:How can I use a WPF FlowDocument or FixedDocument to compose a printable page from on screen controls?如何使用 WPF FlowDocument 或 FixedDocument 从屏幕控件组成可打印页面?
【发布时间】:2010-10-04 08:55:34
【问题描述】:
我正在尝试在我的应用程序的屏幕上打印一些 WPF 控件(数据网格、图表等),但需要重新排列和补充其他文本等。
使用 WPF FlowDocument 或 FixedDocument 似乎是撰写和打印文档的明显方法,但我正在努力实现这一目标。
我尝试从控件创建一个 VisualBrush 并将其用作矩形上的填充但没有成功(矩形根本不显示)。
是否有人使用 FlowDocument/FixedDocument 来执行此操作和/或有任何示例代码显示它是如何实现的?
【问题讨论】:
标签:
c#
wpf
printing
flowdocument
fixeddocument
【解决方案1】:
发现如果在打印之前渲染 FlowDocument(例如,如果托管在 FlowDocumentReader 中),它可以正常工作。
XAML
xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
.
<d3:ChartPlotter x:Name="plotter">
<d3:Header TextBlock.FontSize="20">
Very simple chart
</d3:Header>
</d3:ChartPlotter>
.
<FlowDocumentReader>
<FlowDocument>
<Paragraph>
<Run>Graph Header</Run>
</Paragraph>
<BlockUIContainer>
<Rectangle x:Name="GraphRectangle" Height="300"/>
</BlockUIContainer>
</FlowDocument>
</FlowDocumentReader>
CS
public MainWindow()
{
InitializeComponent();
GraphRectangle.Fill = new VisualBrush(plotter);
}