Of course, duplicate data is not rational. Implement the INotifyCollectionChanged interface
In fact, this may not be so easy, but, benefit, there is access to the source codes ObservableCollection
As you can see, the basis of this class is Collection<T> :
The Collection class also has a constructor that accepts an existing IList implementation. Unlike other classes of collections, the transferred list is not copied, but a proxy is created for it, which means that subsequent changes will be reflected in the Collection shell (although without launching the virtual Collection methods). Conversely, changes made through the Collection will affect the underlying list.
Thus, we can copy the ObservableCollection implementation and add to it something like this constructor (replace the existing one (-e)):
public ObservableCollection(IList<T> list) : base(list) { }
This will allow you to use a ready-made collection of the model, without duplication and, at the same time, all the advantages of the ObservableCollection
INotifyCollectionChanged, I suppose - user227049MVVM, but I don’t see anything wrong with not following all the requirements. - user227049