WPF Маршрутизаторы NotifyPropertyChangeds отправляются диспетчеру? - PullRequest
2 голосов
/ 21 июля 2011

Если я обновляю свойство, которое генерирует NotifyPropertyChanged в потоке, отличном от диспетчера привязанного элемента управления, будет ли принудительно назначено обновление этому диспетчеру?

BackgrounWorker.Run() => { blah.Blahness = 2; // notifies property changed on BW, is this marshalled to the dispatcher? }

1 Ответ

7 голосов
/ 21 июля 2011

Да, событие PropertyChanged автоматически направляется диспетчеру пользовательского интерфейса, поэтому вам не нужно использовать Invoke, чтобы явно его упорядочить.

Обратите внимание, что это верно только для уведомлений об изменениях скалярных свойств (т.е. событие PropertyChanged). Уведомления об изменениях в коллекции (событие INotifyCollectionChanged.CollectionChanged) не работают таким образом, их необходимо вызывать в потоке пользовательского интерфейса вручную. Я написал класс, который делает это автоматически, вы можете найти его здесь .

...