【问题标题】:Optimize WPF ComboBox search with thousands items使用数千个项目优化 WPF ComboBox 搜索
【发布时间】:2011-05-17 07:38:49
【问题描述】:

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

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

如何避免这种行为?

【问题讨论】:

  • 组合框中的 66,000 个项目首先在做什么?
  • 这是一个带有客户列表的组合框,有 66000 个项目

标签: wpf performance combobox


【解决方案1】:

布鲁诺基本上说的是:

在 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>

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2014-08-08
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多