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

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

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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
                    
public class Program
{
    public static Collection<string> list;
    
    public static void Main()
    {
        list = new Collection<string>();
        list.Add("str1");
        list.Add("str2");
        list.Add("str3");
        
        list.Add("str4", new []{ "str2" }, "Test" );
        
        list.Add("str5");
        list.Add("str6");
        list.Add("str7");
        
        foreach(var item in list)
            Console.WriteLine(item);
    }
    
    public class Collection<T>:ObservableCollection<T>
    {
        public void Add(T item, IEnumerable<T> checks, T itemToAdd)
        {
            base.Add(item);
            
            foreach(var checkItem in checks)
                if(Contains(checkItem))
                    base.Add(itemToAdd);
        }
    }
}

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


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

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

15   голосов , оценка 3.667 из 5
Похожие ответы