2011-08-26 3 views
0

IBindingList를 사용하여 GenericCollection을 구현했으며 항목이 추가되거나 제거 된 경우 이벤트가 잘 작동합니다. 예상대로 항목을 변경/편집 할 때 이벤트를 발생시키지 않습니다. 이 컬렉션을 사용하는 각 클래스에서 INotifyPropertyChanged를 구현하지 않고도 변경 사항을 가져 오거나 편집 할 수있는 로직을 구현하는 간단한 방법이 있습니까?일반 콜렉션 - CollectionBase, IBindingList 및 아이템 변경/이벤트에 대한 이벤트 발생

나는 뭔가를 찾고있을 수도 있지만 기본적으로 컬렉션을 사용하는 각 클래스에 대해 INotifyPropertyChanged를 코딩 할 필요없이 DataTable의 기능을 모방하고 내 그리드에 편집/변경.

감사합니다,

마크

+0

'System.Collections.ObjectModel'에서'Collection '또는'ObservableCollection '을 다시 만든 것처럼 들립니다. – SLaks

답변

2

당신은 이미 모든 것을 수행하는의 BindingList<T> 클래스를 사용해야합니다.

+0

좋은 지적. 그게 효과가있을 거라고 생각했는데, 나는 처음에 그것을 시도했다. Telerik 구성 요소를 사용하고 RadGridView에 콜렉션 변경 사항을 반영하려고합니다. 그러나 편집은 그리드에서 업데이트되지 않습니다. 이 링크에서 BindingList가 작동해야합니다. http://www.telerik.com/help/winforms/gridview-populating-with-data-binding-to-bindinglist.html – mservidio

+0

아, 그 사이트에서 정보의 핵심 조각을 놓 쳤어. 기본적으로 그리드는 항목이 삽입되거나 삭제 될 때이를 알립니다. 항목 속성이 변경 될 때 표에 알리려면 사용자 지정 클래스가 INotifyPropertyChanged 인터페이스를 구현해야합니다. 아래 예제에서는 INotifyPropertyChanged 인터페이스를 구현하는 사용자 지정 개체 "MyObject"를 만듭니다. 알림은 MyString 속성에 대해서만 활성화되었습니다. – mservidio

+0

BindingList는 항목을 편집하거나 변경할 때 이벤트를 발생시키지 않습니까? 그렇습니까? msdn에서 읽는 것만으로 새 항목/제거 된 항목을 알리는 것처럼 보입니다. INotifyPropertyChanged를 구현하지 않고 목록 항목 편집을 식별하는 일반적인 방법이 있는지 찾고 싶습니다. – mservidio

1

System.Collections.ObjectModel.ObservableCollection 클래스를 사용하십시오.