.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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д