如果我更新一个属性,抛出NotifyPropertyChanged在线程上,而不是绑定控件的调度程序是更新强制编组到这个调度程序?
BackgrounWorker.Run() => { blah.Blahness = 2; // notifies property changed on BW, is this marshalled to the dispatcher? }
是的,PropertyChanged
事件被自动编组到UI调度程序,所以你不需要使用Invoke
来显式编组它。
注意,它只适用于标量属性的更改通知(即PropertyChanged
事件)。集合更改通知(INotifyCollectionChanged.CollectionChanged
事件)不会以这种方式工作,它们必须在UI线程上手动引发。我写了一个类来自动完成它,你可以在这里找到它