.NET 4.x ObservableCollection и добавление элементов в ообработчике CollectionChanged - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. У меня довольно простая задача, но столкнулся с маленькой неприятностью. Есть свойства типа observablecollection. В него добавляются итемы (для простоты пусть будут строки). Когда у нас есть N-ые итемы(строка "мама" и "папа"), нам нужно добавить ещё итемы (к примеру "ребёнок" и "собака"). У нашей колекции есть удобный евент - CollectionChanged. Подписавшись на ивент я проверяю итемы.

Но как только нужное условие срабатывает и я добавляю итем, вылетает ошибка "нельзя добавить итем во время события ""КоллекцияИзменилась"" "

Как решить этот вопрос? Где\Как проверять чтоб уйти от этого ивента? Или работая с этим ивентом добавить итем?

Решение задачи: «.NET 4.x ObservableCollection и добавление элементов в ообработчике CollectionChanged»

textual
Листинг программы
  1. using System;
  2. using System.Collections.ObjectModel;
  3. using System.Collections.Generic;
  4.                    
  5. public class Program
  6. {
  7.     public static Collection<string> list;
  8.    
  9.     public static void Main()
  10.     {
  11.         list = new Collection<string>();
  12.         list.Add("str1");
  13.         list.Add("str2");
  14.         list.Add("str3");
  15.        
  16.         list.Add("str4", new []{ "str2" }, "Test" );
  17.        
  18.         list.Add("str5");
  19.         list.Add("str6");
  20.         list.Add("str7");
  21.        
  22.         foreach(var item in list)
  23.             Console.WriteLine(item);
  24.     }
  25.    
  26.     public class Collection<T>:ObservableCollection<T>
  27.     {
  28.         public void Add(T item, IEnumerable<T> checks, T itemToAdd)
  29.         {
  30.             base.Add(item);
  31.            
  32.             foreach(var checkItem in checks)
  33.                 if(Contains(checkItem))
  34.                     base.Add(itemToAdd);
  35.         }
  36.     }
  37. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы