【问题标题】:1000 combobox binding1000个组合框绑定
【发布时间】:2012-06-25 05:45:58
【问题描述】:
我有一个 WPF 表单,其中包含 30x30 网格,其中每个网格单元格是 ComboBox。 ComboBox 值和选定值从DataContext 绑定。问题是它运行得很慢。我重新设计了表单,使其显示文本框而不是组合框(TextBox 在鼠标输入时转换为ComboBox),现在可以立即使用。
为什么 ComboBox 这么慢?有什么方法可以改进 ComboBox 的大规模绑定?
【问题讨论】:
标签:
.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;