2

DataGridView가 CollectionChanged 이벤트를 구독하게 될 사용자 지정 컬렉션에 INotifyCollectionChanged를 구현했다는 사실을 알고있었습니다.DataGridView 및 INotifyCollectionChanged

내 컬렉션은 IListSource 및 INotifyCollectionChanged를 구현하며 내부 BindingList가 있습니다. BindingList에서 ListChanged 이벤트를 구독하고 내 OnCollectionChanged 메서드를 호출하여 CollectionChanged 이벤트를 발생시킵니다.

아마도 위와 같은 작업을 수행하는 더 좋은 방법이있을 수 있으며이를 듣고 기뻐할 것입니다. DataGridView에이 CollectionChanged 이벤트를 구독 나의 믿음에서 내가 잘못

public void Sort(List<SortField> sortFields) 
    { 
     if(sortFields == null || sortFields.Count == 0) return; 

     IOrderedEnumerable<T> res; 

     if (sortFields[0].Ascending) 
      res = _items.OrderBy(o => o[sortFields[0].Name]); 
     else 
      res = _items.OrderByDescending(o => o[sortFields[0].Name]); 

     for (int x = 1; x < sortFields.Count; x++) 
      if (sortFields[x].Ascending) 
       res = res.ThenBy(o => o[sortFields[x].Name]); 
      else 
       res = res.ThenByDescending(o => o[sortFields[x].Name]); 

     Items = new BindingList<T>(res.ToList()); 
     OnListChanged(this, new ListChangedEventArgs(ListChangedType.Reset, null)); 
    } 

암 또는 나는 다른 뭔가 잘못하고 있어요 그러나, 순간 나의 주요 관심사는 이런 종류의 메소드가 호출 된 후 업데이트 할 수있는 DataGridView을 받고있다?

답변

1

나는 사용자 정의 컬렉션에 ObservableCollection<T> 클래스를 사용한다고 가정합니다. DataGridViewINotifyCollectionChanged을 알지 못합니다. WinForms에서 사용되지 않는 WPF 바인딩을위한 것입니다.

자세한 내용은 this을 참조하십시오.

+0

아, 알겠습니다. 아니요, ObservableCollection을 사용하고 있지 않지만 WPF로 작업 한 적이 있으므로 DGV가 INotifyCollectionChanged를 지원할 것이라고 생각한 것 같습니다. 감사. – BVernon

관련 문제