Wpf 提高组合框的扩展速度
我有一个包含3000个项目的组合框。展开它需要几秒钟的时间。有没有办法把它扩展得更快?使用ItemsSource和绑定路径绑定项目: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按钮时,数据将
<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>