.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);
}
}
}