我有完全实现 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;
}
}));