2

我是 WPF 新手,对其强大的数据绑定功能感到惊讶。但是,在阅读了大量文章后,我不确定我的项目应该使用哪个选项。

=========== 项目详细信息(涉及查看本地存储的推文存档):

  • 数据由本地存储的 Twitter 推文组成——超过 17,000 条推文以 JSON 格式存储在单个文件中(项目未使用或不需要 Internet 连接)。

  • 我正在使用 JSON.Net 解析文件中的 JSON,每条推文的数十个 JSON 名称/值对都分配给推文对象列表(将每条推文的 JSON 数据转换为推文对象)。

  • 我的程序将使用两个控件来显示数据。

WPF 控件 #1(类似于电子表格):以网格模式和文本格式显示每个 Tweet 行(将有 17,000 多行数据)。因为有几十个字段,所以用户可以选择在有限数量的列(5 左右)中显示哪些字段,这些列将是可见的(例如,日期、发件人、文本等)。用户可以搜索(通过 Linq)、排序和选择推文行。

WPF 控件 #2:以与在 Twitter 中出现的相同格式/外观显示在控件 #1 中选择的每条推文(例如,漂亮的颜色、基本文本、链接等在一个小矩形中 - Twitter 发布了一个标准推文应该如何出现)。如果在控件 #1 中未选择任何推文,则它会通过滚动显示所有 17,000 多条推文。

绑定:当用户选择控件#1 中的推文行时,控件#2 会立即更新以仅以漂亮的图形格式显示选定的推文,反之亦然(即,在控件中选择推文#图 2 显示了控件#1) 中所选推文的数据。还有一个用于选择日期的日历,这将导致相关联的推文显示在控件#1 和控件#2 中。

我正在考虑将 CollectionViewSource 用于控件#1,但是,这似乎不正确,因为用户从不删除推文或将推文添加到推文对象列表中。但是,尝试使用 17,000 多个数据行并绑定到控件 #2 中显示的推文来滚动、排序和保持一切顺利运行,对于其他选项来说处理可能太多了(我确实了解某些选项如何在必要时是虚拟的)。也许 DataGrid 是要走的路?

==== 问题:我应该为 WPF 控件 #1 和 #2 使用什么?

控件 #1 的选项包括:CollectionViewSource、DataGrid、ListView、ListBox

控制#2 的选项包括: ? ListBox 托管图像?

感谢您的时间、考虑和帮助!

4

1 回答 1

0

如果您不进行编辑,请转到 ListView GridView(支持列)并绑定到 List(现在 List 可能是 LINQ 的动态输出,但它仍然是一个 List)。CollectionViewSource 并不是真正的编辑——它是关于过滤和排序的——如果你要使用 LINQ,那么为什么要把 CollectionViewSource 放在图片中。多主控 A 主控 B 和 B 主控 A 有点存在 - 也许重新考虑这个逻辑。使用虚拟化可以完成 17000 条推文。

于 2012-04-04T02:31:55.913 回答