解決方案的設置有點複雜,限制了我的選擇。綁定到沒有ObservableCollection的列表
- 有一個項目包含所有的GUI組件;其中包含一個包含'項目'項目列表的控件,每個項目都包含'文檔'項目列表。最初這兩個列表都是作爲ObservableCollections實現的。
- 項目和文檔在一個單獨的項目中定義,其中一個無法訪問System.Windows
- 該程序的一個關鍵功能是在後臺線程中生成一個Document(因爲它很慢並且耗時);此文檔需要添加到項目的文檔集合中。
由於正在後臺線程中生成文檔,該線程無法將文檔添加到集合 - 生成NotSupportedException。
有幾種方法可以將ObservableCollections擴展爲線程安全 - 不幸的是,迄今爲止我所見過的所有依賴於System.Windows.Threading.Dispatcher,由於(2)我不能使用它。
我發現I cannot use INotifyPropertyChanged on a list and must use a collection implementing INotifyCollectionChanged - 基本上是ObservableCollection了。我不確定當有很多不同的方法可以修改它時,實現List對象的擴展是否是個好主意,並且說它不會有與ObservableCollection相同的問題?
假設Document在HierarchicalDataTemplate中,在綁定上使用顯式UpdateSourceTrigger看起來不太可行,並且在任何情況下將綁定傳遞給Project對象看起來有點難看。
有什麼建議嗎?