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;
}
}));