Поддерживает ли WPF-DataBinding асинхронные обновления - PullRequest
1 голос
/ 15 августа 2010

Я случайно изменил значение свойства BusinessObject, которое реализует INotifyPropertyChanged из BackgroundWorker (BackgroundWorker.DoWork).

Удивительно, но это не привело к ошибке, но актуализировало текст TextBlock, который был привязан к свойству без каких-либо жалоб.

Является ли выполнение асинхронных привязок частью механизма привязки WPF или это только особый случай, когда CheckAccess-тест был забыт или опущен из-за других соображений.

1 Ответ

3 голосов
/ 15 августа 2010

Привязки к скалярным свойствам поддерживают обновления из других потоков, поэтому вам не нужно вызывать Dispatcher.Invoke при обновлении свойства модели (или ViewModel).Однако это не так для привязки к коллекции: если у вас ItemsControl привязано к ObservableCollection<T>, изменения в этой коллекции должны быть сделаны в потоке пользовательского интерфейса, так как события CollectionChangedне пересылается автоматически в поток пользовательского интерфейса.В качестве альтернативы, вы можете использовать вариант ObservableCollection<T>, который вызывает событие в потоке пользовательского интерфейса ( вот реализация )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...