2011-12-16 7 views
0

私は3000アイテムのコンボボックスを持っています。それを広げるのに数秒かかる。それをより速く展開する方法はありますか?項目はのItemsSourceと結合パスを使用してバインドされている:あなたは、パフォーマンスを改善するために、仮想化のStackPanelを使用する必要がコンボボックス拡張スピードを高める

<ComboBox ItemsSource="{Binding Path=SomeItems}" /> 
+2

のようなコントロールテンプレートのポップアップエリアを変更するには、ここで[UI仮想化](HTTPのためのいくつかのコンボボックスのコードです。 stollnitz.com/blog/?p=338) –

答えて

0
  <ComboBox> 
       <ComboBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <VirtualizingStackPanel/> 
        </ItemsPanelTemplate> 
       </ComboBox.ItemsPanel> 
      </ComboBox> 
2

。この場合、ItemsPanelのItemspanelTemplateをStackPanelからVirtualizingStackpanelに変更するだけでは、マジックは実行されません。これは、ダウンボタンを押すとPopupにデータがロードされるためです。 ScrollViewer内のStackPanelをVirtualizingStackpanelに変更する必要があります。 // BEA:Expression Blendのか、VSを使用してコンボボックスの[編集]のControlTemplate /スタイルということをして、

<Popup 
Name="Popup" 
Placement="Bottom" 
IsOpen="{TemplateBinding IsDropDownOpen}" 
AllowsTransparency="True" 
Focusable="False" 
PopupAnimation="Slide"> 
<Grid 
    Name="DropDown" 
    MinWidth="{TemplateBinding ActualWidth}" 
    MaxHeight="{TemplateBinding MaxDropDownHeight}"> 
    <Border 
    x:Name="DropDownBorder" 
    Background="{StaticResource WindowBackgroundBrush}" 
    BorderThickness="1" 
    BorderBrush="{StaticResource SolidBorderBrush}"/> 
    <ScrollViewer Margin="4,6,4,6"> 
    <VirtualizingStackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" /> 
    </ScrollViewer> 
</Grid> </Popup> 

以下
+0

あなたの答えをありがとうが、それは過剰です:) –

関連する問題