2012-06-20 4 views
0

종종 12-30 매우 복잡한 UserControls를 StackPanel에 삽입/삭제합니다. 재사용을 위해 모든 UserControls가 이미 생성되고 캐시됩니다. 컨트롤을 재사용하기 전에 나는 오래된 부모를 청소하고 컨트롤을 기억합니다.WPF 최적화 : StackPanel에서 자식 삽입/삭제

StackPanel.Children.Remove과 같은 작업, 내 시나리오에서는 StackPanel.Children.Add에 많은 시간이 걸립니다.

어떻게 이러한 작업을 최적화 할 수 있습니까? 예 : 한 번에 모든 컨트롤을 StackPanel에 삽입하거나 컬렉션 수정 중에 알림을 고정시키지 않습니까?

wpf 최적화 (MSDN 제외)를 개선 한 유용한 기사를 누가 알 수 있습니까?

답변

2

ObservableCollectionOnCollectionChanged() 이벤트 처리기를 재정 의하여 이벤트 처리를 모두 사용하지 않도록 설정하거나 나중에 처리하도록 이벤트를 대기시킬 수 있습니다.

여기 게시물을 참조, 대답은 당신을 도울 수 - https://stackoverflow.com/a/5491534/903056

+0

StackPanel은 내부 구현을 위해 ObservableCollection을 사용하지 않습니다. 그것은 UIElementCollection을 사용하며이 컬렉션을 사용자 정의 할 수있는 방법을 모릅니다. – Victor

+0

StackPanel의 항목이 ObservableCollection에 바인딩되어 있다고 가정했습니다 (종종 MVVM 에서처럼). – EkoostikMartin

1

을 나는 당신이 가상화 된 UI 또는 데이터로드 (있는 경우) 전략으로 볼 필요가 가정합니다.

이 경우 UI를 더 적게 만들려면 VirtualizingStackPanel과 같은 컨트롤을 사용하십시오. 블로그 this에 대한 자세한 정보가 있습니다.

+0

질문에 쓰는 방법은 컨테이너에서 ~ 20 개의 컨트롤 만 사용합니다. 문제는 제 아이가 매우 복잡합니다. 그리고 각 삽입은 이미 삽입 된 컨트롤에 대한 물 흐름 알림을 유발한다고 생각합니다. – Victor

관련 문제