【问题标题】:1000 combobox binding1000个组合框绑定
【发布时间】:2012-06-25 05:45:58
【问题描述】:

我有一个 WPF 表单,其中包含 30x30 网格,其中每个网格单元格是 ComboBox。 ComboBox 值和选定值从DataContext 绑定。问题是它运行得很慢。我重新设计了表单,使其显示文本框而不是组合框(TextBox 在鼠标输入时转换为ComboBox),现在可以立即使用。

为什么 ComboBox 这么慢?有什么方法可以改进 ComboBox 的大规模绑定?

【问题讨论】:

  • 您是否使用了虚拟化组合框? (例如,请参阅文章UI Virtualization)。

标签: .net wpf performance xaml combobox


【解决方案1】:

ComboBox默认不使用虚拟化(VirtualizingStackPanel),你可以很简单的改变控件使用的面板:

<ComboBox ItemsSource="{Binding}">
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel />
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>

参考:Improving Combobox Performance through UI Virtualization

如果ComboBox 拥有数千个项目,这对提高性能有很大帮助,但不确定对您的情况会有多大帮助,因为拥有 1000 个组合框对于 UI 来说非常重要。

您也可以尝试将这些组合框放在虚拟化面板中(如ListBox 或直接使用VirtualizedStackpanel)。

您可以尝试的另一件事是使用 IsAsync 属性使您的 ComboBox ItemSource 绑定异步。

我希望你使用ObservableCollection 作为你的ItemSource

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2011-06-13
    • 2012-06-18
    • 2011-03-09
    相关资源
    最近更新 更多