Наша внешняя команда разработчиков создала модель со свойством ObservableCollection. Теперь я отвечаю за создание ViewModel, и у меня возникли проблемы, потому что упомянутая Модель работает внутри BackgroundWorker (другой поток) - что означает, что я не могу обновить View, перехватывая события CollectionChanged. Вот обходной путь, который я сделал:
private Model model = new Model();
public ObservableCollection<Entry> Entries { get; set; }
public ctor()
{
BackgroundWorker peon = new BackgroundWorker();
peon.DoWork += work;
peon.RunWorkerCompleted += updateViewCollection;
peon.RunWorkerAsync();
}
private void work(object sender, DoWorkEventArgs e)
{
model.DoSomething();
}
private void updateViewCollection(object sender, RunWorkerCompletedEventArgs e)
{
// model.entries is an ObservableCollection<Entry>
foreach (Entry en in this.model.entries)
{
if (!this.Entries.Contains(en))
this.Entries.Add(en);
}
}
Есть ли лучший способ привязать ObservableCollection модели к ObservableCollection вида с помощью многопоточной модели представления?