Мой сценарий: у меня есть фоновый поток, который опрашивает изменения и периодически обновляет ObservableCollection WPF DataGrid (стиль MVVM). Пользователь может щелкнуть строку в DataGrid и отобразить «детали» этой строки в соседнем элементе управления UserControl на том же главном экране.
Когда фоновый поток имеет обновления, он циклически перебирает объекты в ObservableCollection и заменяет отдельные объекты, если они изменились (другими словами, я не привязываю целую новую ObservableCollection к DataGrid, а заменяю отдельные элементы в коллекции; это позволяет DataGrid поддерживать порядок сортировки во время обновлений).
Проблема заключается в том, что после того, как пользователь выбрал конкретную строку, и детали отображаются в смежном элементе управления пользователя, когда фоновый поток обновляет DataGrid, DataGrid теряет SelectedItem (он возвращается к индексу -1).
Как сохранить SelectedItem между обновлениями ObservableCollection?