Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-打印ListView的内容?_C#_Wpf_Listview_Printing - Fatal编程技术网

C# WPF-打印ListView的内容?

C# WPF-打印ListView的内容?,c#,wpf,listview,printing,C#,Wpf,Listview,Printing,我已经创建了自己的usercontrol,它使用ListView来显示项目的仲裁列表。在我的项目中的每个页面上,ListView的列以XAML格式显示,然后绑定到我的对象 现在我要做的是在我的控件中编写一个Print方法,它将打印出ListView的全部内容 我读了一个类似的问题,其中的答案是我应该将ItemsSource转换成一个表。如果,真的,这就是完成这项任务的方法,那么有人能好心地带我完成一个任意对象的过程吗 谢谢,Sonny由于源于,也许您可以使用该方法打印列表视图本身: new Pr

我已经创建了自己的usercontrol,它使用ListView来显示项目的仲裁列表。在我的项目中的每个页面上,ListView的列以XAML格式显示,然后绑定到我的对象

现在我要做的是在我的控件中编写一个Print方法,它将打印出ListView的全部内容

我读了一个类似的问题,其中的答案是我应该将ItemsSource转换成一个表。如果,真的,这就是完成这项任务的方法,那么有人能好心地带我完成一个任意对象的过程吗

谢谢,
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,我可以直接处理对象,并绕过在打印过程中试图保留的所有格式。