我是 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 托管图像?
感谢您的时间、考虑和帮助!