2017-10-31 1 views
0

설명서에 따르면 컬렉션 항목 추가/제거를 전파하기 위해 ListCollectionView의 소스 컬렉션에 INotifyCollectionChanged를 구현해야합니다. 이 작업 방법ILIst에 ListCollectionView의 소스 컬렉션으로 항목 추가

 var parent = new Parent(); 
     parent.Childs = new List<Child>(); 
     parent.Childs.Add(new Child()); 
     parent.Childs.Add(new Child()); 
     parent.Childs.Add(new Child()); 
     var view = new ListCollectionView(parent.Childs); 

     Assert.AreEqual(3, parent.Childs.Count); 
     Assert.AreEqual(3, view.Count); 

     parent.Childs.Add(new Child()); 
     Assert.AreEqual(4, parent.Childs.Count); 
     Assert.AreEqual(4, view.Count); 

는 아무도 설명 할 수주십시오 그래서 나는 그의 작업 방식을 이해하지?

답변

0

왜 작동하지 않습니까? Child 개 항목을 추가하면 주장하고 있습니다. Count 속성은 항상 항목 수를 반환합니다.

INotifyCollectionChanged 인터페이스를 구현해야하는 이유는 보기은 UI를 새로 고쳐야하는시기를 알 수 있기 때문입니다. 당신이 ListView에 표시되는 데이터 바인딩 컬렉션에 항목을 추가 할 경우 새 항목이 자동으로보기에 표시 할

예를 들어, 소스 수집은 CollectionChanged 이벤트를 발생시킬 필요가있다.

+0

원본 컬렉션이 INotifyCollectionChanged 이벤트가없는 IList 일 때 항목이 뷰에 추가됩니다. 뷰는 항목이 추가 된 것을 어떻게 알 수 있습니까? –

+0

이것은 놀라운 일이 아닙니다. 왜 그것이 뷰 /리스트에 추가되지 않을까요? INotifyCollectionChanged는 컬렉션이 데이터 바인딩 일 때만 중요합니다. – mm8

+0

나를 위해 그것이 정말로있다. 원본 목록 (ILIst)에는 추가 된 항목을보기 (ListCollectionView)에 알리는 이벤트가 없으므로 설명서에 따르면 소스 목록에 INotifyCollectionChanged가 구현되어있어 이런 일이 일어나고 나에게 의미가 있다고합니다. 그래서 내 질문은 어떻게 ListCollectionView 항목이 추가 된 것을 알 수 있습니다. 이것이 항상 이렇게 작동하고 있는지 확인할 수 있습니까? –

관련 문제