【问题标题】:WPF Printing - Multipage Invoice Via Flowdocument, Paginator and FixedDocumentWPF 打印 - 通过 Flowdocument、Paginator 和 FixedDocument 的多页发票
【发布时间】:2010-10-14 09:46:09
【问题描述】:

我们目前正在使用 WPF 创建多页发票文档,然后通过 XPS 打印/导出。

我们为此采取的方法是创建一个包含标准列表框等显示发票行的用户控件,然后将其包含在 BlockUIContainer 标记内的 FlowDocument 中。

当将此 FlowDocument 放置在窗口中的 FlowDocumentScrollViewer 标记内时,它可以完美地工作,并且 UserControl 的数据绑定内容可以正确显示。但是,当我们尝试在代码中创建相同的 FlowDocument 时,它会失败并出现“'Cannot create unknown type '{clr-namespace:FOO}FooUserControl”XamlParseException。如果删除 UserControl,则可以通过编程方式成功创建 FlowDocument。

这是 FlowDocument XAML:

<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:local="clr-namespace:MARS"
          ColumnWidth="400" FontSize="14" FontFamily="Georgia">
<Paragraph>
    Blah
</Paragraph>

<BlockUIContainer>
    <local:printTestUserControl></local:printTestUserControl>
</BlockUIContainer>

这是我们用来在代码中创建它的代码:

FileStream xamlFile = new FileStream("printTestFlowDoc.xaml", FileMode.Open, FileAccess.Read);            
FlowDocument content = (FlowDocument)XamlReader.Load(xamlFile);
flowDocScrollViewer.Document = content;
xamlFile.Close();

我们在代码中创建 FlowDocument 的原因是,然后使用 Paginator 对象将其分割成一系列 FixedDocuments,然后打印/导出到 XPS,我们还没有尝试过,但从我的到目前为止,这似乎是在 WPF 中实现多页文档打印的一种可行方法(文档在第一页有页眉,在最后一页有总计页脚,中间有 x 页的行)。

非常欢迎对此问题的任何建议或其他方法。

这些是我们迄今为止收集到的一些信息的一些链接,但遗憾的是还不够! (我将在 cmets 中包含其他链接,因为 StackOverflow 目前不信任我提供多个链接!)

See the section "Dynamically Creating a FlowDocument, Data Binding and Printing It"Scott Hanselmann 好像遇到了和我们一样的问题,只是加了一行

Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.SystemIdle, new DispatcherOperationCallback(delegate { return null; }), null);

没有让我们的 FlowDocument 加载,但他只是绑定到 FlowDocument 中的 TextBlocks,而不是包含 UserControl。

非常感谢您阅读本文!以及任何人都可以提供的帮助。

【问题讨论】:

标签: wpf printing flowdocument


【解决方案1】:

抱歉,我整理这个问题的速度太慢了,但我们刚刚完成了这个项目,我现在正在整理它的所有松散端。

事实证明,flowdocument / XPS 方法是一种完全错误的方法来完成这项任务,事实上,内置的 RDLC 报告使我们能够以相对直接的方式实现发票文档所需的一切。

这样做的主要好处是我们能够报告业务模型对象的内存实例,而不必使用从数据库中查找的数据,通过从水晶调用的存储过程,以前的系统依赖于之上。 VS 中的报表文件编辑器很容易上手,但在布置复杂报表时有时会有点烦人。

希望这可能对考虑从 WPF 应用程序报告的选项的人们有所帮助。

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多