2012-02-29 3 views
0

'메시지/주석'표시를 구현하려고합니다.WPF MVVM 응용 프로그램에서 ObservableCollections 업데이트

보기는 ObservableCollection에 바인딩 된 ListBox로 구성됩니다 (이들은 게시물입니다). 나는 또한 양방향 ListBox의 SelectedItem 바인딩입니다.

현재 선택된 게시물에 대한 응답도 다른 ObservableCollection에 저장됩니다. 이 컬렉션의 모든 항목은 선택한 메일 바로 다음에 Posts 컬렉션에 삽입되어야합니다.

속성의 모든 항목이 정상적으로 업데이트됩니다. 이 목록이 렌더링되면 대변이 팬을 때린다.

새 게시물을 선택할 때마다 '.Add()'대신 '.Insert()'를해야합니다. 이는 수천 개의 게시물과 수백 개의 의견을 처리 할 때조차도 [수용 할 수없는] 중요한 성능상의 벌칙이 있습니다.

내가하고 싶습니다 : 'PostsCollection = newObservableCollectionWithPostsAndComments'하지만 전체 목록 상자가 새로 고쳐지고 SelectedItem이 선택 취소됩니다.

Listbox를 다시 그리지 않고 ListBox에 바인딩 된 ObservableCollection <>에 항목을 동적으로 삽입하는 것을 어떻게 처리해야합니까? 내가 코딩 실수를 한 약간의 느낌을 가지고,하지만 난 여기에 모든 소스 코드를 표시 할 수 없습니다 :

은 제외하고 새로운 항목에서

편집을 표시하고 *. 내가 원한 것이 가능하다면 말해 줄 수 있다면 좋을 것입니다.

+1

직면 한 문제를 복제하는 샘플 테스트 코드를 게시하면 유용합니다. –

+0

ICollectionView를 사용하고 바인딩 할 때 그것, 그럼 내림차순 정렬? –

답변

0

문제를 올바르게 이해하면 Observable 컬렉션에 항목을 삽입하는 데 문제가 있습니다. 실제로 삽입 할 때마다 컬렉션은 컬렉션 변경 이벤트를 호출하고 UI가 다시 그려집니다.

해결 방법 중 하나는 ObservableCollectionEx와 같은 Observable Collection에서 컬렉션에 여러 항목을 추가하지만 하나의 컬렉션 변경 이벤트 만 발생시키는 AddRange (IEnumerable 항목)와 같은 메서드를 사용하여 새 클래스를 파생시키는 것입니다. 이 예는

http://xcalibursystems.com/2013/12/making-a-better-observablecollection-part-1-extensions/

아래의 링크를 다른 방법으로, 아마도없는 깨끗한 한 항목의 결과 세트로 새 ObservableCollection에를 작성하고 목록 상자의 ItemsSource가 결합 할 수있는 속성에 할당하는 것입니다. 또한 INotifyPropertyChanged를 구현하면 해당 속성에 대해 PropertyChanged 이벤트를 발생시키는 것을 잊지 마십시오

관련 문제