在Silverlight 3和4版本以及WPF 3.5和4版本中绑定属性时,Windows Phone 7版本的Silverlight是否始终将属性更改通知转发到UI线程?您是否知道任何无法依赖于此并且需要在代码中执行转发的场景?
我进行了一些实验...
INotifyPropertyChanged
如果您从后台线程更改属性并且它从该后台线程触发INotifyPropertyChanged,而该属性是数据绑定的,则...
DependencyProperty
如果该属性是依赖属性而不是INotifyPropertyChanged呢?如果您从后台线程更改此属性会怎样?好吧,我没有做任何实验,但我读到它不会执行任何调度。
INotifyCollectionChanged(例如ObservableCollection)
如果您从后台线程添加/删除ObservableCollection中的元素,并且该集合已绑定到listbox或类似的控件,那么会发生什么?
是的,集合。当您将数据绑定到一个可观察的集合并且您在非UI线程中更改它时,会抛出异常。您需要将集合更改调度到UI线程。