WPF異常——某個ItemsControl與它的項源不一致


某個ItemsControl與它的項源不一致

異常

原因

UI中DataGrid綁定的集合在另一個線程中增加的過快,導致兩個項源不一致。解決方案是加鎖。

解決

解決步驟如下:

  1. 加一把鎖
 
 
 
         
  1. private readonly object _busABcDatasLock = new object();
  2. public AsyncObservableCollection<BusDataLine> BusAbcDatas { get; set; }
  1. 綁定時指定鎖
 
 
 
         
  1. BusAbcDatas = new AsyncObservableCollection<BusDataLine>();
  2. BindingOperations.EnableCollectionSynchronization(BusAbcDatas,_busABcDatasLock);//在ViewModel的構造器中
  1. 集合新增項時鎖定集合
 
 
 
         
  1. private void AddItemToAsynList(AsyncObservableCollection<BusDataLine> list, BusDataLine item, object lockObject)
  2. {
  3. lock (lockObject)
  4. {
  5. list.Add(item);
  6. }
  7. }





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM