StackPanel을 사용하여 여러 컨트롤 (예 : 제목, 하위 제목, 목록 상자, 구분 기호, 목록 상자 등)을 세로로 배치합니다.StackPanel의 거대한 ListBox의 성능을 향상시킬 수 있습니까?
StackPanel은 내용을 항상 스크롤 할 수 있도록 ScrollViewer의 하위 항목입니다.
StackPanel의 컨트롤 중 하나는 ListBox입니다.
ItemsSource는 거대한 컬렉션에 바인딩 된 데이터이고 복잡한 DataTemplate은 각 항목을 실현하는 데 사용됩니다.
불행히도, 나는 성능이 열악 해지고 있습니다 (높은 CPU/메모리).
은 내가 VirtualizingStackPanel에 목록 상자의 ItemsPanel을 설정- 시도하고,
- 는 (리스트 박스의에서 ScrollViewer를 제거) 만 ItemsPresenter 그것의 ControlTemplate을 무시.
그러나 성능에는 차이가 없었습니다. StackPanel은 내부 자식을 측정하는 동안 무한한 높이를 제공합니다.
ScrollViewer 및 StackPanel을 다른 패널/레이아웃 (예 : Grid, DockPanel)으로 대체하고 성능이 크게 향상되면 솔루션뿐만 아니라 병목 현상도 가상화에 있다고 생각하게됩니다.
이보기의 CPU/메모리 성능을 향상시킬 수있는 방법이 있습니까?
는은 [업데이트 1]는
원래 샘플 프로젝트 : http://s000.tinyupload.com/index.php?file_id=29810707815310047536는
내가 재 스타일/템플릿 트 리뷰/TreeViewItems을 시도
[2 업데이트]을 마련하기 다음 예제. 그것은 시작/동일, 높은 메모리 사용에 여전히 오랜 시간이 걸립니다. 그러나 일단로드되면 스크롤링은 원본 샘플보다 훨씬 반응이 좋습니다.
시작 시간/메모리 사용을 더 향상시킬 수있는 다른 방법이 있다면 궁금하십니까?
재 스타일 트 리뷰의 프로젝트 : http://s000.tinyupload.com/index.php?file_id=00117351345725628185
[업데이트 2]
pushpraj의 솔루션은
- 원래 매력처럼 작동합니다
- 시작 : 35S,
- 메모리 : 393MB
- 스크롤 : 느린
- 트 리뷰 :
- 시작 : 18 세,
- 메모리 377메가바이트,
- 스크롤 : 빠른
- pushpraj의 솔루션 :
- 시작 : < 1 초,
- 메모리 : 20메가바이트,
- 스크롤 : 빠른
에 어떤 디자이너 경고가있는 경우 안전하게 무시할 수 – jayars
이 사실이지만 가상화는 높이가 고정되거나 최대 높이가 정의 된 경우에만 작동 할 수 있지만 무제한 높이에서는 작동하지 않습니다. 아마도 복합 컬렉션을 사용하여 스택 패널에있는 모든 항목을 결합하고 가상화가 활성화 된 목록 상자에 모든 항목을 표시 할 수 있습니다. 코드를 공유해 주시겠습니까? 그 일을 도와 드리겠습니다. – pushpraj
샘플 프로젝트 – jayars