簡體   English   中英

WPF MVVM從BackgroundWorker更新UI綁定屬性

[英]WPF MVVM Updating UI Bound properties from BackgroundWorker

從Backgroundworker更新ViewModel的UI綁定屬性是否存在任何潛在問題? 我正在嘗試在綁定到UI時更新VM,並且可能用戶可能正在鍵入...同步如何工作(我不認為我可以使用來自XAML的Lock語句)。

提前致謝..

更新標量屬性時,您無需擔心在UI線程上執行此操作。 PropertyChanged事件自動編組到UI線程。

但是,它不適用於實現INotifyCollectionChanged集合。 CollectionChanged事件不會被編組到UI線程,它將導致異常。 因此,如果修改綁定到ItemsControl的集合,則需要使用Dispatcher.Invoke (或其他同步機制)在UI線程上執行此操作。 另一種選擇是使用專門的集合來處理將事件編組到正確的線程。 有關此類集合的示例,請參閱此文章

根據我使用Silverlight的經驗,嘗試這樣做會導致異常。

基本上,您需要從調度程序線程更新綁定屬性,就像您直接修改UI一樣。

為了允許ViewModel在不知道真正的Dispatcher情況下這樣做,我發現創建一個IDispatcher接口很有用,然后使用SameThreadDispatcher進行測試,使用SystemDispatcher (委托真實的)進行生產。 然后,您將ViewModel作為依賴項傳遞給IDispatcher

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM