2010-05-17 74 views
0

我有一段时间试图让Silverlight数据网格正确排序,并快速完成(子1/10秒)。这里的情景:Silverlight 4 Datagrid排序

-WCF回调第二 -Take回调的每1/5,匹配现有记录中一个ObservableCollection -Update的的ObservableCollection的属性 -bind电网。

我试过一个linq查询,PagedCollectionView和observablecollection.select(),都是waaaaaaay太慢了,并且在处理中引入了12+秒的延迟。任何人都会遇到这种情况

+0

您排序的记录数有多少? – Stephan 2010-05-17 18:53:18

+0

50条记录。应该是快速的,但它不是...... – DavyMac23 2010-05-17 19:02:20

+0

当您尝试使用PagedCollectionView时,您正在使用SortDescriptions集合进行排序,或者您是否手动排序并创建新的PagedCollectionView?你还可以详细说明WCF回调是干什么的?这意味着DataGrid应该被采用。 – Stephan 2010-05-17 19:14:06

回答

0

从独立的计时器调用PagedCollectionView.Refresh工作。这可以防止刷新调用每十分之一秒被调用(这是我场景中回调的频率)。

0

使用PagedCollectionView,但只设置一次。在应用程序启动时创建一个视图,然后在您的WCF回调中更新对象而不是创建新对象。然后在您的CollectionView上拨打Refresh()

+0

我做了这一切,但它仍然需要很长时间,远远超过十分之一秒。你能想到别的吗?在那段时间,我把PagedCollectionView.Refresh放在自己的定时器中,并用一个回调函数抛出。它工作正常,但我很失望,我们无法有效地排序50个记录。 – DavyMac23 2010-05-17 19:52:40

+0

你是否更改源代码集?如果你完全改变源代码集合,它会强制DataGrid重建它的整个结构。 – Stephan 2010-05-17 20:05:24

+0

是的,我正在用最新的数据更新集合...记录是相同的,只是更新属性 – DavyMac23 2010-05-18 12:55:54

相关问题