IEnumerable<T> myCollection
의 다른 인스턴스에 바인딩하는 대신 권장 방법은 Context.EntitySet<T>
에 직접 바인딩하는 것입니다. EntitySet<T>
은 INotifyCollectionChanged
및 INotifyPropertyChanged
인터페이스를 구현합니다. EntitySet<T>
의 동일한 인스턴스에 바인딩하면 EntitySet<T>.CollectionChanged
이벤트에 응답하여 각 페이지에 변경 사항이 통지 될 수 있습니다. 예를 들면 다음과 같습니다.
// Page 1
_myCollection = Context.EntitySet<MyItem>();
_myCollection.CollectionChanged += MyItemsChanged;
...
// Page 2
_myCollection = Context.EntitySet<MyItem>();
_myCollection.CollectionChanged += MyItemsChanged;
모든 페이지가 컬렉션에 추가하거나 제거하면 모든 페이지에 통지됩니다.
귀하의 의견과 관련하여 IEnumerable<T>
은 INotifyCollectionChanged
인터페이스를 구현하지 않으며 변경 알림을 게시하지 않습니다. 최상의 결과는 EntitySet<T>
을 직접 사용했을 때 나타납니다.
'myCollection'의 다른 인스턴스 대신'Context.EntitySet'을 사용할 수 있습니까? 엔터티를 저장할 병렬 컬렉션을 만드는 이유는 무엇입니까? –
당신은 EntitySet에 직접 바인딩하는 아이디어로 suprises를 얻었습니다. 내가 읽은 모든 자료에서 이것은 결코 제안 된 옵션이 아니 었습니다. 어쨌든 IEnumerable을 사용하여 제안한 작업을 수행 할 수도 있습니다. 각 VM에서 동일한 인스턴스를 참조하기 만하면됩니다. 문제 : 동일한 컬렉션을 항상 쿼리하는 경우 데이터 저장소에서 새로운 데이터를 얻는 방법은 무엇입니까? –
Goran