我有一个包含30x30网格的WPF表单,每个网格单元格都是一个“ComboBox”。 ComboBox的值和所选值都从“DataContext”绑定。 问题是它非常缓慢。 我已经重新设计了表单,以便显示文本框而不是组合框(并且当鼠标进入时,“TextBox”转换为“ComboBox”),现在可以立即使用。
为什么ComboBox如此缓慢? 是否有任何方法可以改善大规模绑定ComboBox?
为什么ComboBox如此缓慢? 是否有任何方法可以改善大规模绑定ComboBox?
ComboBox
默认情况下不使用虚拟化(VirtualizingStackPanel
),您可以通过非常简单的方式更改控件使用的面板:
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
如果一个ComboBox
有数千个项,使用这种方法可以显著提高性能。但是在UI中拥有1000个组合框还是有点多。
您还可以尝试将这些comboBoxes放置在虚拟面板中(例如 ListBox
或直接使用 VirtualizedStackpanel
)。
另一件事,您可以尝试使用IsAsync
属性异步绑定您的ComboBox
ItemSource
。
希望您正在使用ObservableCollection
作为您的ItemSource
。