대분류를 선택하면 DB에서 불러와 소분류, 본문을 출력되는 기능을 구현하려 합니다.
그러려면 ObservableCollection에 요소를 제거하고 하나하나 넣어야 하는데, 넣을 때마다 CollectionChanged 이벤트가 발생하는 문제가 있습니다.
요소를 모두 넣은 후 출력되게 하는 다른 방법이 있을까요?
3개의 좋아요
이런 식으로 ObservableCollection를 재정의 하시면 됩니다.
AddRange와 비슷한 논리로 삭제도 구현하시면 됩니다.
using System.Collections;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
CustomObservableCollection<int> list = new();
list.CollectionChanged += (s, e) =>
{
Console.WriteLine(e.NewItems?.Count ?? 0);
};
list.Add(1);
list.Add(2);
list.Add(3);
list.AddRange(new[] { 4, 5, 6 });
public class CustomObservableCollection<T> : ObservableCollection<T>
{
public void AddRange(IList<T> list)
{
foreach (var item in list)
Items.Add(item);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, list as IList));
}
}
| 출력결과
1
1
1
3
7개의 좋아요
감사합니다!
2개의 좋아요