1000个组合框结合

Sib*_*Guy 4 .net wpf performance xaml combobox

我有一个WPF表单,其中包含30x30网格,其中每个网格单元格为a ComboBox.ComboBox值和选定的值是绑定的DataContext.问题是它变得非常缓慢.我重新编写了表单,以便显示文本框而不是组合框(并在鼠标输入时TextBox转换为文本框ComboBox),它现在可以立即生效.

为什么ComboBoxes这么慢?有没有办法改善ComboBoxes的大规模绑定?

akj*_*shi 5

ComboBoxVirtualizingStackPanel默认情况下不使用virtualization(),您可以通过一种非常简单的方式更改控件使用的面板:

<ComboBox ItemsSource="{Binding}">
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel />
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

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

如果ComboBox有成千上万的项目,这对提高性能有很大帮助,不确定在你的情况下有多少帮助,因为有1000个组合框用于UI.

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

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

我希望你ObservableCollection用作你的ItemSource;