1000个组合框绑定

4
我有一个包含30x30网格的WPF表单,每个网格单元格都是一个“ComboBox”。 ComboBox的值和所选值都从“DataContext”绑定。 问题是它非常缓慢。 我已经重新设计了表单,以便显示文本框而不是组合框(并且当鼠标进入时,“TextBox”转换为“ComboBox”),现在可以立即使用。
为什么ComboBox如此缓慢? 是否有任何方法可以改善大规模绑定ComboBox?

2
你是否使用了虚拟化的ComboBoxes?(例如,参见文章UI虚拟化)。 - user128300
1个回答

5

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

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

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

如果一个ComboBox有数千个项,使用这种方法可以显著提高性能。但是在UI中拥有1000个组合框还是有点多。

您还可以尝试将这些comboBoxes放置在虚拟面板中(例如 ListBox 或直接使用 VirtualizedStackpanel)。

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

希望您正在使用ObservableCollection作为您的ItemSource


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接