2013-07-08 2 views
1

직장에서 ListBoxItem ControlTemplate에서 MultiTrigger를 사용하면 성능에 미치는 영향에 관해 질문이 생겼습니다.트리거 및 멀티 트리거의 성능 영향

상황은 약간 이렇게 진행됩니다. 선택한 ListBoxItem의 애니메이션과 색상을 정의하는 ListBox 컨트롤의 사용자 지정 스타일이 있습니다. ListBox가 비활성화되었을 때 선택된 ListBoxItem에 선택된 "배경"강조 표시가 나타나지 않기 때문에 문제가 발생했습니다. 이로 인해 ListBoxItem의 ControlTemplate에 트리거 집합을 추가하여 ListBoxItem이 비활성화되고 선택되었을 때이 사용자 지정 강조 표시를 해제 할 수있었습니다. 성능에 부정적인 영향에 대한 걱정이 시작된 곳이다 :

을 모든 ListBoxItem의 항목의 많은이 있다면 이것은 눈에 띄는 성능에 미치는 영향을 생성 할 트리거를 확인하고 트리거를 위해 활성화 할 필요가있는 경우. 이 코드는 컴퓨터에서 실행되기 때문에 문제가 될 수 있습니다.

+0

MVVM, MVC, MVP 중 하나를 사용하고 있습니까? – oleksii

+1

매우 비싼 변환기가 없다면 트리거는 일반적으로 단순한 비교입니다. 또한 목록 상자에서 가상화를 사용하도록 설정해야합니다. rs는 보이는 항목에만 활성화됩니다. 코드를 프로파일 링하십시오. WPF에 성능 문제가있는 경우 트리거가 원인 일 수는 없습니다. –

+0

@oleksii이 응용 프로그램은 MVVM을 사용합니다. –

답변

3

WPF는 "구형 컴퓨터"를 지원하지 않습니다.

수이 당신의 ListBox 당신이 VirtualizingStackPanel를 사용하지 않음으로써하거나 스크롤 될 때까지 ListBoxItems이 생성되지 않음) 같은 다른 StackPanel로 (에 무한 컨테이너 ListBox를 넣어 그것을 깰하지 않는 기본 동작 인 (가상화 된 경우 ListBox에 1000000000 개 항목이 있는지 여부에 관계없이 화면에 들어 맞는 항목 만 실제로 만들어지고 메모리 + CPU를 소비합니다.