【发布时间】:2015-10-06 11:21:00
【问题描述】:
在自定义 ListView 控件上,我正在开发一个“导出到 Excel”小按钮,它将 ListView 的所有内容发送到 Excel。由于此按钮嵌入在 ListView 控件中,因此我不知道列出了哪些类型的对象或显示了哪些列。
所以我的方法是通用的,只需解析所有列标题和所有行以将数据导出到 Excel。但是在解析不可见的 ListViewItem 时,您会得到 null 结果。一个解决方案是在我的 ListView 上设置 VirtualizingStackPanel.VirtualizationMode="False" 但当您有数千行时它会强烈影响 GUI 体验。
我正在寻找一种方法来为我的通用导出方法加载所有 ListViewItem,并为 GUI 保持虚拟化。
有人可以帮我吗?
谢谢。
【问题讨论】:
-
我不明白你想要什么,关闭虚拟化的唯一方法是将
VirtualizingStackPanel.IsVirtualizingProperty设置为 false。等完成你的方法后可以再次开启。 -
您应该只为您的任务使用底层数据,而不是生成的 UI 容器。
-
基础数据是来自 SQL 数据库的表数据,与我显示的列(甚至是链接表)一样多的字段。我的应用程序中有很多 ListView,这意味着我必须返回每个视图并定义应该导出到 Excel 的内容。所以我正在寻找一种方法来强制 ListView 通过代码加载所有项目。
-
您可以使用 ListView 的 ItemGenerator 做一些事情,使其生成视图容器,然后向它询问每个项目的视图。我现在不在电脑前寻找细节。
标签: wpf listview virtualization listviewitem