2010-05-17 158 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