【问题标题】:Silverlight 4 Datagrid SortingSilverlight 4 数据网格排序
【发布时间】:2011-02-20 13:04:18
【问题描述】:

我花了很长时间试图让 silverlight 数据网格正确排序,而且做得很快(不到 1/10 秒)。这是场景:

-WCF 每 1/5 秒回调一次 - 接受回调,匹配 ObservableCollection 中的现有记录 - 更新 ObservableCollection 的属性 - 绑定网格。

我已经尝试过 linq 查询、PagedCollectionView 和 observablecollection.select(),它们都太慢了,并且在处理过程中引入了 12 秒以上的延迟。其他人有过这种经历吗?

【问题讨论】:

  • 你要排序多少条记录?
  • 50 条记录。应该很快,但不是......
  • 当您尝试 PagedCollectionView 时,您是在使用 SortDescriptions 集合进行排序还是手动排序并创建新的 PagedCollectionView?您还可以详细说明 WCF 回调在做什么吗?它发生了什么变化,这意味着应该使用 DataGrid。
  • WCF 服务以更新的对象响应,它大约有 20 个属性,我想说可能每 1/2 秒更改 8-10 个属性。我正在使用 SortDescriptions。页面加载,我设置了 pagedcollectionview,然后是 sortdescriptions,然后是网格的 itemssource...除了排序之外的所有内容都会更新

标签: silverlight sorting datagrid


【解决方案1】:

从单独的计时器调用 PagedCollectionView.Refresh 有效。这可以防止 Refresh 调用每 1/10 秒被调用一次(这是我的场景中的回调频率)。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我这样做了,但仍然需要很长时间,远远超过 1/10 秒。你能想到别的吗?与此同时,我使用 PagedCollectionView.Refresh 并将它扔到它自己的计时器中并带有回调。它工作正常,但我很失望我们不能有效地对 50 条记录进行排序。
    • 您是否要更改源集合?如果您完全更改源集合,它会强制 DataGrid 重建它的整个结构。
    • 是的,我正在使用最新数据更新集合...记录相同,只是更新属性
    • 如果 PagedCollectionView.Refresh() 太慢,我怀疑你能不能更快。
    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多