2009-11-10 72 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