2010-06-08 6 views
3

붐비는 콤보 박스 (5000 개 항목)의 성능 문제가 있습니다. 드롭 다운 목록의 렌더링은 실제로는 느립니다 (예 : 모두 표시하기 전에 모든 항목).Silverlight 콤보 박스 성능 문제

이 드롭 다운 표시를 게으 르도록하려면 어떤 트릭이 있습니까?

XAML 코드 : 뒤에

<Grid x:Name="LayoutRoot"> 
     <StackPanel Orientation="Horizontal" Width="200" Height="20"> 
      <TextBlock>Test Combo </TextBlock> 
      <ComboBox x:Name="fooCombo" Margin="5,0,0,0"></ComboBox> 
     </StackPanel> 
    </Grid> 

코드 :

공공 MainPage() { 의 InitializeComponent();

List<string> li = new List<string>(); 

    int Max = 5000; 
    for (int i = 0; i < Max; ++i) 
     li.Add("Item - " + i); 

    fooCombo.ItemsSource = li; 
} 

음, 그래서 autocompletebox 갈 방법이어야한다, 콤보 상자의 UI 가상화 a bug있을 것 같습니다.

답변

2

대신 AutoCompleteBox을 사용하십시오. 한 번에 필요한 드롭 다운 항목 수를 제한하기 위해 드롭 다운 목록이 채워지기 전에 입력해야하는 문자 수를 조정하십시오.

+0

실제로이 문제를 해결하려면이 방법을 고려해 보겠습니다. – Vinzz

+1

@Vinzz : 콤보 상자를 100s로 채우는 요구 사항이 1000s를 넘는 이유는 처음부터 아주 좋은 UI 디자인 결정이 아니기 때문에 진정한 솔루션이 있는지는 확실치 않습니다. – AnthonyWJones

6

ItemsTemplateVirtualizingStackPanel으로 바꿀 수있는 실제 ComboBox (AutoCompleteBox 아님)를 원한다면. 5000 개 항목이 강한 많은처럼 보이기 때문에 - 나는 아마 ComboBox 당신을위한 올바른 컨트롤인지 여부를 확인하기 위해 사용 시나리오를 검토 할 것, 비록 가이드로

<ComboBox x:Name="fooCombo" Margin="5,0,0,0"> 
    <ComboBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel></VirtualizingStackPanel> 
     </ItemsPanelTemplate> 
    </ComboBox.ItemsPanel> 
</ComboBox> 

: 당신의 예에서이 같을 것이다 드롭 다운 목록.

그런데 Silverlight에서는 느린 동작이 예상되지만 버그는 아닙니다.

+0

이것은 더 나은 대답입니다. –

+0

SL5에서는 작동하지 않으므로주의하십시오! 나는 내 SL4 프로젝트에서 그것을 가지고 있었고 업그레이드 후 파산했다. http://connect.microsoft.com/VisualStudio/feedback/details/715111/silverlight-5-combobox-problem – katit