2013-02-01 2 views
0

문제가 무엇인지 알 것 같지만 해결 방법에 대한 단서가 없습니다.Observablecollection 변경으로 인해 업데이트가 실행되지 않음

나는 WPF DataGrid에서 채울 수있는 관찰 가능한 컬렉션을 가지고 있습니다. 그런 다음 하위 격자에 DataGrid 행의 드래그 앤 드롭을 구현했습니다. 행이 다른 그리드에 드래그 경우 나는 ObservableCollection의 값을 변경 한 다음과 같은 기본 데이터 표시 :

   var q = from standard in DispatchResult 
         where DispatchResult.Route == RouteName 
         select standard; 

       dgRoutedData.ItemsSource = q; 

내가 나를 위의 LINQ 쿼리의 결과에 itemssource를 설정하는 추측이 나누기를 관찰 가능한 컬렉션에서 전체 자동 알림을 받으면 항목의 "Route"값이 변경되면 실제로 업데이트되는 필터링 된보기를 표시하는 DataGrid를 얻으려면 어떻게해야합니까?

+1

(필터 조건과 구운 다른 기능을 가진 개인 백업 필드)을 래핑하는 제안 바퀴를 재 - 발명하고 PagedCollectionView을 사용 해달라고 : [방법 : DataGrid 컨트롤에서 데이터 그룹화, 정렬 및 필터링] (http://msdn.microsoft.com/en-us/library/dd833072.aspx) – Jon

+0

Proeprty Changed 이벤트에 대한 알림을 받으시겠습니까?, –

+0

Jon에게 감사드립니다. 회신으로 게시하고 답변으로 만들 것입니다. – JaggenSWE

답변

1

당신은 변화가 발생 하였음을 통지 할 필요가 그리드의 ItemsSource 기준 변경의 - 당신은 항상 포장을 시도 할 수 있습니다 새로운에서 linq 쿼리 결과 ObservableCollection

예 :

var col = new ObservableCollection<DispatchResult>(); 
col.AddRange(q); 
dgRoutedData.ItemsSource = col; 

은 삭제 단지

또는/및 기존에 다시 추가 (이것은 이전 관찰 실 거예요 항목이 새 관찰에 대한 변경 이벤트를 마련으로 새로운 관찰에서 작동해야하는 단점이있다) 수집.

원본 컬렉션에 필터를 제거한 후에 '뒤로'필터링하려는 항목이 포함되어 있기 때문에이 방법을 사용하지 않았다고 가정합니다. 이 경우 실제 데이터를 보유 할 개인 백업 필드를 유지하고 해당 백업 필드에 필터링 된 창으로 ObservableCollection<T>을 사용하려는 경우가 있습니다.

_myList = new List<MyObject>(); // Populate it etc 
SomeObservable.Clear(); 
SomeObservable.AddRange(from item in _myList where item.ID == 1 select item); 

또는 누군가가 위의 기능 나는이 충분해야한다고 생각

0

obvservable 모음을 백업의 항목을 새로 고침 (collection.Clear(); collection.AddAll (Q))를 대신

관련 문제