【发布时间】:2018-08-08 22:03:57
【问题描述】:
我有一个 MainViewModel 和一个 CategoryViewModel
MainViewmodel 有集合:
public ObservableCollection<Category> Categories { get; set; }
在 CategoryViewModel 中,我有 ICollectionView 用于过滤:
public ICollectionView CategoriesView { get; set; }
CategoriesView = CollectionViewSource.GetDefaultView(_mainViewModel.Categories );
CategoriesView .Filter = new Predicate<object>(o => Filter(o as Category));
问题是,如果我不使用 CategoriesView,我可以修改(添加、编辑、删除)我的 Categories ObservableCollection,但是当我实现 CategoriesView 进行过滤时,在尝试向可观察集合:
这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection
App.Current.Dispatcher.Invoke((Action)delegate
{
_mainViewModel.Categories.Add(newCategory);
});
还有:
BindingOperations.EnableCollectionSynchronization(_matchObsCollection , _lock);
我已经进入 Debug --> Windows --> Threads 该方法确实在主线程中
【问题讨论】:
标签: c# wpf observablecollection