【发布时间】:2011-05-12 19:26:55
【问题描述】:
我对 wpf 和 mvvm 很陌生,所以这可能是一个简单的问题,但我希望有人可以向我解释。我的模型中有一个类,它所做的只是轮询进程,如果它看到“calc”正在运行,它会将它的进程 ID 添加到列表中。如果您关闭 calc.exe,它会将其从列表中删除。如果列表发生变化,它会触发并发生事件。在我的 ViewModel 中,我订阅了该事件并更新了触发 PropertyChanged 的属性。现在,如果我的属性是视图模型中的列表,那么我的视图中的绑定不会正确更新。如果我将我的列表更改为模型和视图模型中的 ObservableCollection,那么我会遇到跨线程问题。但是,如果我将列表留在模型中并将 ViewModel 中的属性更改为 ObservableCollection 并将列表的值复制到可观察集合中,一切都会按预期工作......我不明白,我真的需要进行复制以使我的 ListBox 中的绑定正常工作吗?
【问题讨论】:
标签: wpf multithreading mvvm listbox