I have written the following class which implements(or tries to!) a dictionary with notifications:
public partial class ObservableDictionary
I rolled out my own: https://www.nuget.org/packages/hellosam.net.collections/
It uses AVL tree so operations are O(log N) instead, where most implementations I have seen using List.indexOf() are O(N).
It can even observe your item INotifyPropertyChanged and convert them to a observable collection event, so to keep the DataGrid sort/group response to the change.