2010-12-09 48 views
1

我已經重寫ListCollectionView來延遲加載只顯示所需的項目。覆蓋WPF中的排序DataGrid/ListCollectionView

我在DataGrid中使用此ListCollectionView來顯示和編輯項目。

這很好,就像它應該。

我的問題:我希望用戶能夠通過單擊標題列對DataGrid進行排序。由於我只在需要時才加載項目,所以ListCollectionView在排序那些尚未加載的項目方面做得不好。

解決此問題的一種方法是加載所有項目,但我不想這樣做,因爲這可能太多項目要在一個可觀的時間加載。

相反,我想獲取通知,並告訴我的(遠程)數據源將相應的項目預先分類。

有沒有簡單的方法來攔截DataGrid或(更好)ListCollectionView中的排序,並自己做,不知何故?

+0

..正如我在你創建的其他主題中所說:我想,你需要探索[ListCollectionView](http://msdn.microsoft.com/en-us/library/system.windows.data.listcollectionview_properties。首先,因爲它適合大多數場景,程序員通常希望在他們的應用程序中實現。最有可能的是,你不需要派生這個類來進行延遲加載。您可以使用Filter來代替,並且還有其他方法可以執行延遲加載,而無需派生類。 – Nawaz 2010-12-09 17:37:49

+0

從雲服務加載400000項目來做客戶端上的過濾並不是真正的解決方案,我可能與之合作:) – Sam 2010-12-10 11:29:37

回答

0

如果您需要進行數據虛擬化,請在codeplex上有專門的庫。 所有你需要做的就是實現以下方法:

public IList<T> LoadRange(int startIndex, int count, 
       SortDescriptionCollection sortDescriptions, out int overallCount) 

在此方法中,你可以調用WCF服務,並返回一個排序和被截斷的列表。 這個庫不容易理解,但它的工作原理。