2011-10-26 3 views
1

나는 루프를 처리하고 컨트롤을 만드는 개체 목록을 가지고 있습니다. 그런 다음 각 컨트롤을 listbox 항목의 내용에 넣고 목록 상자에 추가합니다.Silverlight ListBoxItem 성능이 좋지 않음

나는 매우 열악한 성능을 얻고있는 것처럼 보입니다. 내 코드의 주석이 달린 비트가 나와서 컨텐트가 컨트롤 성능으로 채워지면 창 밖으로 나가는 것 같습니다. 이 목록 상자 중 80 개를 만드는 데 4 분이 걸리는 것 같습니다. 왜이 문제를 해결할 수 있는지 또는 어떻게 알 수 있습니까?

코드 샘플 :

foreach (var service in e.Result) 
      { 
       ListBoxItem lbi = new ListBoxItem(); 
       lbi.Tag = service.ServiceId; 

       SmallServicePanel ssp = new SmallServicePanel(); 
       ssp.DisplayText = service.DisplayText; 
       ssp.ServiceTemplateId = service.ServiceTypeId; 
       ssp.ServiceId = service.ServiceId; 
       ssp.HexColor = service.HexColor; 

       lbi.Content = ssp; 
       MyListBoxControl.Items.Add(lbi); 
      } 
+0

80 (!) 목록 상자는 하나의 대화 상자에 있습니까? 무슨 좋은 작은 대화 ;-) – Fischermaen

+0

불행히도 그게 클라이언트가 원하는 것을 thats 필터링하는 데 사용되지만 그들은 "모든"옵션을 원한다. –

+0

나도이 문제를 경험했다. 전체 UI가 멈췄다. 목록 컨트롤에 해당 usercontrol을로드했다. – Rumplin

답변

2

(많은 컨트롤 느리게하는) 반복적 컨트롤을 만들 (SmallServicePanel 등) 디스플레이 객체를 보여 컬렉션과 DataTemplate이 바인딩을 사용하는 대신.

이 작업을 완료하면 ListBox의 가상화 기능을 사용하거나 가상화를 제공하는 다른 컨트롤을 선택합니다. 즉, 존재하는 실제 컨트롤의 수는 표시되는 것보다 훨씬 많지 않고 성능이 도약을 의미합니다.

Google에 알려주세요.

+0

감사합니다. 완벽하게 작동합니다. –

관련 문제