2011-05-17 64 views
1

我有一个66000项itemsSource的WPF组合框控件。为了提高加载性能,我使用了VirtualizingStackPanel并且没问题,但现在我又遇到了另一个问题。使用数千个项目优化WPF组合框搜索

ComboBox是可编辑的,当我在TextBox上键入时,它开始搜索SelectedItem以匹配...但它很慢,并且不会立即响应输入的字符。

如何避免这种行为?

+6

首先在组合框中做66,000个项目是什么? – BoltClock 2011-05-17 08:05:59

+0

这是一个带有客户列表的组合框,共有66000个项目 – 2011-05-17 08:35:47

回答

0

使用VirtualizingStackPanel只能确保你将有UI虚拟化技术的但在你的情况下,作为BoltClock可能想指出,你可能需要考虑实施DataVirtualization,以及...

5

什么布鲁诺基本说:

在MSDN上了解了更多关于它: http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel.aspx

下面的代码注意你需要在你的其他绑定添加...:

<ItemsPanelTemplate x:Key="VirtualPanel"> 
    <VirtualizingStackPanel /> 
</ItemsPanelTemplate> 

<ComboBox ItemsPanel="{DynamicResource VirtualPanel}"> 

,也可以手动将它添加...

   <ComboBox VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"> 
     <ComboBox.ItemsPanel> 
      <ItemsPanelTemplate > 
       <VirtualizingStackPanel/> 
      </ItemsPanelTemplate> 
     </ComboBox.ItemsPanel> 
    </ComboBox> 
0

使用VirtualizingStackPanel.VirtualizationMode="Recycling" 这将重用的项目,而不是容器创建和丢弃物品的容器,并提高性能。