【发布时间】:2011-06-08 09:05:42
【问题描述】:
当绑定到 Silverlight 3 和 4 中的属性时,Windows Phone 7 版本的 silverlight 以及 WPF 3.5 和 4 中的属性更改通知是否总是编组到 UI 线程?您是否知道我不能依赖它并且必须在我的代码中进行编组的任何情况?
【问题讨论】:
标签: wpf multithreading silverlight data-binding ui-thread
当绑定到 Silverlight 3 和 4 中的属性时,Windows Phone 7 版本的 silverlight 以及 WPF 3.5 和 4 中的属性更改通知是否总是编组到 UI 线程?您是否知道我不能依赖它并且必须在我的代码中进行编组的任何情况?
【问题讨论】:
标签: wpf multithreading silverlight data-binding ui-thread
是的,收藏。当您绑定到可观察集合并从非 UI 线程更改它时,您将收到异常。您必须将集合更改编组到 UI 线程。
【讨论】:
我做了一些实验……
INotifyPropertyChanged
如果您从后台线程更改属性,并从该后台线程触发 INotifyPropertyChanged,并且该属性是数据绑定的,那么...
依赖属性
如果属性是依赖属性而不是 INotifyPropertyChanged 怎么办?如果您从后台线程更改此属性怎么办?好吧,我没有做过任何实验,但我读到它没有做任何编组。
INotifyCollectionChanged(例如 ObservableCollection)
如果您从后台线程添加/删除 ObservableCollection 中的元素,并且该集合被数据绑定到列表框或类似的,那么会发生什么?
【讨论】: