ItemsControl
에 렌더링이 많은 항목 템플릿이 있고 ItemsSource
이 변경을 알릴 때 하위 항목 템플릿의 레크리에이션을 최소화하고 싶습니다. ObservableCollection
은 (전체 목록과 달리) 변경된 내용을 정확하게 WPF에 알릴 수 있는지, 컬렉션 변경 내용을 렌더링하는 것이 더 효율적인지 또는 WPF가 이전 항목 뷰를 발견 할만큼 재사용 할만큼 똑똑한지를 알기 때문에 궁금합니다. 동일한 항목이 여전히 변경된 목록에 있습니다.ObservableCollection에 ItemsControl을 바인딩하고 있습니까 <T>보다 효율적으로 <T>을 바인딩하고 있습니까?
3
A
답변
4
귀하의 의혹은 맞습니다. WPF는 이전보기를 다시 사용하지 않습니다. ItemsControl의 ItemsSource를 새 List로 바꾸면 동일한 항목이 이전 목록에 있던 경우에도 목록의 각 항목에 대해 완전히 새로운보기가 만들어집니다.
사용자 정의 컨트롤을 ItemTemplate에두고 중단 점 또는 디버그 로깅을 해당 생성자에 추가하여 직접 테스트 할 수 있습니다. ItemsSource를 동일한 목록으로 바꾸면 목록의 각 항목에 대해 컨트롤이 한 번 구성됩니다. 반면에 ObservableCollection에 항목을 추가하면 해당 항목이 한 번만 표시됩니다.
가상화 패널을 사용하고 컨테이너 재활용을 활성화 한 경우 ItemsControl은 컨테이너 (예 : ListBoxItem)를 다시 사용할 수 있습니다. http://blogs.msdn.com/b/vinsibal/archive/2008/05/14/recycling-that-item-container.aspx을 참조하십시오. 그러나 여전히 컨테이너의 내용을 재사용 할 수는 없습니다.
0
ObservableCollection은 개체 추가 및 제거에 대해서만 알려주므로 예상 한 것만 큼 정확하지는 않습니다 (목록 내의 개체가 변경되면 ObservableCollection에서 알림을 실행하지 않습니다).
관련 문제
- 1. ObservableCollection에 바인딩하고 ValueConverter를 사용하여
- 2. 컬렉션을 바인딩하고 정렬하는 방법
- 3. 모델 HttpPostedFileBase 바인딩하고
- 4. 두 개의 UserControl을 동일한 DataContext 또는 ViewModel에 바인딩하고 있습니까?
- 5. 다음을보다 간단하게 /보다 효율적으로 만들 수 있습니까?
- 6. WPF에 XDocument를 바인딩하고 XPath를 계속 사용 하시겠습니까?
- 7. 다른 단추 스타일에서 단추 스타일에 바인딩하고 싶습니다.
- 8. C#에서 열을 바인딩하고 업데이트하는 DataGridView 편집
- 9. WPF 바인딩을 ComboBox에 바인딩하고 항목을 선택하는 중
- 10. (WPF) ItemsControl을 목록에 저장할 수 있습니까?
- 11. Treeview를 동적으로 바인딩하고 선택된 노드를 가져옴
- 12. WPF - ItemsSource에 바인딩하고 SelectedIndex가 예외를 throw합니까?
- 13. WPF 콤보 상자를 바인딩하고 richtextbox에 선택된 항목
- 14. Mootools - 클래스 인스턴스에 바인딩하고 이벤트 객체에 액세스
- 15. WPF : DataContext로 표시를 바인딩하고 업데이트하는 방법
- 16. asp.net C#에서 그리드에 arraylist를 바인딩하고 싶습니까?
- 17. DropDownList를 ListItemCollection에 바인딩하고 DDL에 값을 추가하지 않음
- 18. <보다 느린 이유> =
- 19. ObservableCollection에 <T>을 캐스팅하지 않고 생성자없이 삽입 <T>
- 20. '* 2'대신 '<< 1'을 사용하면 어떤 이점이 있습니까?
- 21. 이 있습니까 <%와 <% =
- 22. <html>을 가지고있을 필요가 있습니까?
- 23. Asp.net : <% # 또는 <%
- 24. kerberos 티켓 TGT 및 Windows XP 및 Unix의 서비스 티켓 경로?
- 25. List [<String>]보다 String []을 사용하면 어떤 이점이 있습니까?
- 26. Free Pascal의 버전 번호가있는 컴파일 조건에> (보다 큼) 또는 <(보다 작음)을 사용할 수 있습니까?
- 27. 기존 KerberosTicket을 사용하여 Ldap에 바인딩하고 사용자 속성 검색
- 28. <input> 및 <iframe>을 수직 정렬하는 방법은 <td> 안에 있습니까?
- 29. Jquery는 링크에 바인딩하고 일부 jquery를 실행 한 다음 링크를로드합니다
- 30. 저장 ObservableCollection에 <> 다시 내가 sqlite가 테이블을 반영하는 ObservableCollection에 <>의 항목을 표시하는 마스터 - 세부 설정을 가지고 WPF
위대한 답변! 감사 :) – devios1