使用数千个项目优化WPF ComboBox搜索

时间:2011-05-17 07:38:50

标签: wpf performance combobox

我有一个带有66000项itemsSource的WPF ComboBox控件。为了提高加载性能,我使用了VirtualizingStackPanel,没关系,但现在我还有另一个问题。

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

如何避免这种行为?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

使用VirtualizingStackPanel只能确保您拥有 UI Vitualization ,但在您的情况下,正如BoltClock可能想要指出的那样,您可能还需要考虑实施 DataVirtualization 。 ..

答案 2 :(得分:0)