我有完全MVVM实现的DataGrid。我注意到,当我对一个列进行排序并且该列有多个具有相同值的行时,这些行会继续进行洗牌。让我用下面的例子解释一下:
CAR | Brand | Color
-------------------
1 | Honda | Red
2 | Ford | Blue
3 | GMC | Red
如果我按“颜色”排序此表。排序很好,但第1行和第3行将继续更改/交换。
我必须说我的ViewModel有一个连续更新数据的线程。基本上,该线程在查询数据后执行此操作:
mCollectionViewSource.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send,
new Action(delegate()
{
if (!mObservableCollection.Contains(newDataObject))
{
mObservableCollection.Add(newDataObject);
}
else
{
int index = mObservableCollection.IndexOf(newDataObject);
mObservableCollection[index] = newDataObject;
}
}));