2013-06-06 32 views
13

Tôi có một sự kiện CollectionChanged được liên kết với một số ObservableCollection. Sự kiện CollectionChanged này sau đó gọi một chức năng khác nhằm cập nhật một bộ sưu tập khác (cùng loại) với một mục từ bộ sưu tập gốc. Tôi đã đọc các bài viết khác trên "Không thể thay đổi ObservableCollection trong một sự kiện CollectionChanged" và tôi hiểu hoàn toàn lý do tại sao nó bị cau mày khi sửa đổi bộ sưu tập bên trong sự kiện CollectionChanged và lý do tại sao điều này có thể dẫn đến tham chiếu vòng tròn ... trường hợp cụ thể này tôi không sửa đổi bộ sưu tập gốc, tôi chỉ thêm một mục từ bộ sưu tập đó vào bộ sưu tập không liên quan.Không thể thay đổi ObservableCollection trong sự kiện CollectionChanged

Vì vậy, đối với câu hỏi của tôi .. có điều gì sai trái với những gì tôi đang làm không? Tôi không thấy cách thêm một mục từ bộ sưu tập với sự kiện gắn với nó vào một bộ sưu tập khác sẽ kích hoạt sự kiện lần nữa và tạo tham chiếu vòng tròn (mặc dù hãy cho tôi biết nếu tôi sai về điều này).

Ngoài ra ... có cách nào xung quanh nó không? Tôi đọc một số bài viết tư vấn để chạy này trên một thread riêng biệt nhưng khi tôi cố gắng mà tôi nhận được lỗi sau để thay thế.

This type of CollectionView does not support changes to its SourceCollection 
from a thread different from the Dispatcher thread. 

Tôi thực sự chỉ sau khi hiểu rõ hơn về những gì đang xảy ra ở đây. Bât cư lơi khuyên nao cung se được đanh gia cao.

Sửa

ví dụ đơn giản như yêu cầu

void originalCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
{ 
    update(originalCollection); 
} 

private void update(object parameter) 
{ 
    foreach (var originalCollectionItem in parameter) 
     newCollection.Add(originalCollectionItem); 
} 
+0

Bạn gặp phải lỗi gì? – SLaks

+0

Tiêu đề của bài đăng là thông báo lỗi .. Không thể thay đổi ObservableCollection trong sự kiện CollectionChanged – aw04

+0

Bạn có thể đăng mã thực tế không? –

Trả lời

Các vấn đề liên quan