Wpf 提高组合框的扩展速度

Wpf 提高组合框的扩展速度,wpf,performance,user-interface,mvvm,combobox,Wpf,Performance,User Interface,Mvvm,Combobox,我有一个包含3000个项目的组合框。展开它需要几秒钟的时间。有没有办法把它扩展得更快?使用ItemsSource和绑定路径绑定项目: <ComboBox ItemsSource="{Binding Path=SomeItems}" /> 您必须使用虚拟化stackpanel来提高性能。在这种情况下,只需将ItemsPanel的ItemspanelTemplate从StackPanel更改为VirtualzingStackPanel不会产生任何效果,因为当您按下Down按钮时,数据将

我有一个包含3000个项目的组合框。展开它需要几秒钟的时间。有没有办法把它扩展得更快?使用ItemsSource和绑定路径绑定项目:

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

您必须使用虚拟化stackpanel来提高性能。在这种情况下,只需将ItemsPanel的ItemspanelTemplate从StackPanel更改为VirtualzingStackPanel不会产生任何效果,因为当您按下Down按钮时,数据将加载到弹出窗口中。因此,您必须将ScrollViewer中的StackPanel修改为VirtualzingStackPanel。为此,请使用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>



下面是一些组合框代码,感谢您的回答,但这是一个过火的回答:)
            <ComboBox>
                <ComboBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VirtualizingStackPanel/>
                    </ItemsPanelTemplate>
                </ComboBox.ItemsPanel>
            </ComboBox>