2013-09-03 4 views
1

List에 바인딩 된 DataGrid가 포함 된 WPF 응용 프로그램이 있습니다. 내 목록은 INotifyPropertyChanged 인터페이스를 구현합니다. 그래서 언제 재산이 바뀌 었는지 알 수 있습니다. 그러나 새 항목이 추가되거나 삭제되면이 일이 발생했음을 알리는 이벤트가 없습니다.목록 및 ObservableCollection 결합

내가 본 읽은 후 항목이 CollectionChanged 이벤트를 통해 추가 또는 삭제 된 때 ObservableCollection에 나를 알 수 있습니다. 그러나 ObservableCollection에는 목록이 극복하는 몇 가지 단점이 있습니다.

그래서 내 질문은 당신이 둘의 기능을 가지고 있도록 목록 & ObservableCollection에 결합 할 수 있다면 무엇입니까? List를 상속받을 수 있습니까? 그렇다면 덮어 쓸 필요가있는 방법이 있습니까?

+9

어떤 기능 (들) 목록의 당신은 ObservableCollection에 이미 제공하지 않는 것을 원하는가? –

+3

@ p.s.w.g 내가 생각할 수있는 유일한 점은'ObservableCollection'에는'AddRange'가 없다는 것입니다. 그러나 그것은 쉽게 확장 기능으로 해결됩니다 – Shoe

+6

[INotifyCollectionChanged] (http://msdn.microsoft.com/en-us/library/system.collections.specialized.inotifycollectionchanged.aspx)를 보았습니까? –

답변

0

귀하의 질문에 간단한 대답은 '예,하지만 몇 가지 작업과 함께'입니다.

ObservableCollection<T> 클래스 구현 Collection<T> 클래스를 확장 IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable 인터페이스 - List<T> 클래스와 동일. 그러나 ObservableCollection<T> 클래스도 INotifyCollectionChangedINotifyPropertyChanged 인터페이스를 구현하므로이 두 가지 주요 차이점이 있습니다.

따라서 List<T> 클래스를 확장하고 수동으로 INotifyCollectionChangedINotifyPropertyChanged 인터페이스를 구현하여 두 가지 장점을 최대한 활용할 수 있습니다. 수동으로 사용자 정의 ObservableCollection<T> 기본 클래스에 AddRangeSort 방법을 추가 한 후, 내 WPF 프로젝트의 개체를 표시 할 List<T>을 사용할 필요를 느낀 적이 있다고 말했다 가졌어요.

관련 문제