2009-11-10 126 views
2

我有幾個datagrid我需要更新的信息。事情是,由於不止一個人同時在系統上工作,所以需要定期刷新數據網格。當我刷新時,我失去了用戶的排序。WPF保持列排序與Datagrid

有沒有辦法保留它?

謝謝

回答

2

請注意,這是未經測試,但你可以做這樣的事情嗎?

ListCollectionView lcv = (ListCollectionView)CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource); 
IComparer mySort = lcv.CustomSort; // assumes you've already set it beforehand 
... // stuff happens 
lcv.CustomSort = mySort; 

我仍然在學習WPF自己,但希望這是一些幫助...... -Matt。

+1

要涵蓋所有基礎,您可能還希望在SortDescriptions中進行復制。這樣,無論選擇何種排序,您都將保留排序順序。相關代碼將如下所示:var sd = lcv.SortDescriptions.ToList(); [...] if(!lcv.SortDescriptions.SequenceEqual(sd){lcv.SortDescriptions.ClearItems(); foreach(d in sd)lcv.SortDescriptions.Add(d);} – 2009-11-10 22:06:04

5

只更新綁定集合的內容 - 不要替換集合本身。那麼你不會得到一個新的CollectionView,所以你的排序不會受到影響。

+0

我嘗試過但似乎無法讓它工作。我必須在其他時間檢查 – 2009-11-13 18:24:49