C# WPF-打印ListView的内容?
我已经创建了自己的usercontrol,它使用ListView来显示项目的仲裁列表。在我的项目中的每个页面上,ListView的列以XAML格式显示,然后绑定到我的对象 现在我要做的是在我的控件中编写一个Print方法,它将打印出ListView的全部内容 我读了一个类似的问题,其中的答案是我应该将ItemsSource转换成一个表。如果,真的,这就是完成这项任务的方法,那么有人能好心地带我完成一个任意对象的过程吗 谢谢,C# WPF-打印ListView的内容?,c#,wpf,listview,printing,C#,Wpf,Listview,Printing,我已经创建了自己的usercontrol,它使用ListView来显示项目的仲裁列表。在我的项目中的每个页面上,ListView的列以XAML格式显示,然后绑定到我的对象 现在我要做的是在我的控件中编写一个Print方法,它将打印出ListView的全部内容 我读了一个类似的问题,其中的答案是我应该将ItemsSource转换成一个表。如果,真的,这就是完成这项任务的方法,那么有人能好心地带我完成一个任意对象的过程吗 谢谢,Sonny由于源于,也许您可以使用该方法打印列表视图本身: new Pr
Sonny由于源于,也许您可以使用该方法打印列表视图本身:
new PrintDialog().PrintVisual(yourListView, "Print Job Description");
嗯。。。我终于(某种程度上)解决了这个问题
我已经遍历了ListView中的GridViewColumns,对于每一列,我还遍历了ListView的ItemSource,并使用反射来获取DisplayMemberBinding.Path.Path,然后可以使用它来获取属性的值
DisplayMemberBinding也有我所有转换器的信息,所以我可以开始了
它很慢(在ListView中400行大约10秒),但它可以工作。这也是我的第一直觉。不幸的是,对于一些包含大量项目的列表视图,它希望显示滚动条而不是所有项目。“你知道解决这个问题的办法吗?”桑尼谈到同样的问题。接受的答案使用一个
FlowDocument
来保存列表视图项。@Fréd-我如何为一个Arbirty对象这样做?我不确定如何从ListView中获取行和列的集合,以便我可以遍历它们…@Sonny,你可以直接枚举你的ItemsSource
。它是一个IEnumerable
,因此foreach
循环和LINQ查询将对它起作用。@Fréd-但是我不需要为我的ListView中显示的每种类型的对象编写一个特殊的案例吗?我使用了许多转换器和模板来让我的对象显示在ListView中。通过迭代ItemsSource,我可以直接处理对象,并绕过在打印过程中试图保留的所有格式。