哪个数据绑定选项适用于大型静态对象列表?

时间:2012-04-03 22:14:29

标签: c# wpf data-binding

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

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

  • 这些数据包括本地存储的Twitter推文 - 超过17,000条推文以JSON格式存储在一个文件中(项目不使用或不需要互联网连接)。

  • 我正在使用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托管图像?

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

1 个答案:

答案 0 :(得分:0)

如果你不编辑那么去ListView GridView(支持列)并绑定到List(现在List可以是LINQ的动态输出,但它仍然是List)。 CollectionViewSource实际上并不是关于编辑 - 它是关于过滤和排序 - 如果你打算使用LINQ,那么为什么要把CollectionViewSource放在图片中。 Multimaster B和B的A大师有点在那里 - 也许重新考虑那个逻辑。通过虚拟化,可以完成17000条推文。