我们的异地开发团队创建了一个带有ObservableCollection属性的模型。现在,我负责创建ViewModel,而且我遇到了麻烦,因为上述模型在BackgroundWorker(另一个线程)内运行 - 这意味着我无法通过挂接CollectionChanged事件来更新视图。下面是我做的解决方法:模型中的ObservableCollection + ViewModel中的线程
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?