我有一个ObservableCollection<A> a_collection;该集合包含'n'个项目.每个项目A看起来像这样:
public class A : INotifyPropertyChanged
{
    public ObservableCollection<B> b_subcollection;
    Thread m_worker;
}
基本上,它都连接到WPF列表视图+详细信息视图控件,它在单独的列表视图中显示所选项目的b_subcollection(双向绑定,propertychanged上的更新等).当我开始实现线程时,问题出现了.整个想法是让整个a_collection使用它的工作线程来"工作",然后更新它们各自的b_subcollections并让gui实时显示结果.
当我尝试它时,我得到一个例外,说只有Dispatcher线程可以修改ObservableCollection,并且工作停止了.
任何人都可以解释这个问题,以及如何解决它?
干杯
我正在尝试根据列表视图项目数据执行方法。除此之外,触发命令的按钮应该只在列表视图项的“CanExecute”方法返回 true 时启用。
“MyCommand”和“CanExecute”这两种方法都包含在我的 ViewModel 中。不幸的是,我不确定如何将项目信息正确地传递给这两种方法以符合 PRISM 6 框架。
所以我的第一种方法是这样做:
模型
public class MyModel
{
    public string Name { get; set; }
    public string Version { get; set; }
    public int Identifier { get; set; }
}
视图模型
public class MyViewModel : BindableBase
{
    private ObservableCollection<MyModel> _models = new ObservableCollection<MyModel>();
    public ObservableCollection<MyModel> Models
    {
        get { return _models; }
        set { SetProperty(ref _models, value); }
    }
    public DelegateCommand VerifyCommand { get; set; }
    public MyViewModel()
    {
        //Add test data
        for …