4

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

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

4

1 回答 1

5

ComboBox默认情况下不使用虚拟化(VirtualizingStackPanel),您可以通过非常简单的方式更改控件使用的面板:

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

参考:通过 UI 虚拟化提高 Combobox 性能

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

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

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

我希望你使用ObservableCollection你的ItemSource;

于 2012-06-25T06:12:28.873 回答