使用ViewModels进行UI线程处理

Jac*_*eja 6 .net wpf mvvm

  • 必须在UI线程上更新在WPF视图中绑定的集合.
  • ViewModel公开了一个集合
  • 因此,当修改ViewModel中的集合时,必须在UI线程中完成
  • 最佳做法是让ViewModel不了解View,并推测Dispatcher这样的细节.

在保持视图模型可测试的同时解决此问题的最简洁方法是什么?

kiw*_*pom 1

您说得对,WPF 为我们提供了Dispatcher使多线程变得简单的方法;但如果您想将关注点与 MVVM 模式分开,则需要实现不同的线程策略。

我总是发现该类BackgroundWorker足以满足此要求,将更新推送回 UI 线程,以便您可以ObservableCollection在 VM 中更新并将更改传播到视图。